Апостроф не переводится должным образом, когда помещается в пакет ресурсов

Апостроф не переводится должным образом при помещении в пакет ресурсов.

key = {0}'s brush is {1} centimeters tall

(e.g. Sam's brush is 4 centimeters tall)

Апостроф пропускается, если я форматирую указанный выше ключ в java.util.ResourceBundle В чем здесь может быть проблема?

72 голоса | спросил user339108 15 WedEurope/Moscow2010-12-15T14:59:36+03:00Europe/Moscow12bEurope/MoscowWed, 15 Dec 2010 14:59:36 +0300 2010, 14:59:36

8 ответов


0

Вы должны экранировать одинарную кавычку как

key = {0}''s brush is {1} centimeters tall
ответил Raghuram 15 WedEurope/Moscow2010-12-15T15:02:31+03:00Europe/Moscow12bEurope/MoscowWed, 15 Dec 2010 15:02:31 +0300 2010, 15:02:31
0

Я твердо верю, что проблема заключается не в наборе ресурсов, а в MessageFormater вы используете для печати сообщения:

из java doc MessageFormater :

  

Внутри строки, '' ( две одинарные кавычки ) представляет   одиночная кавычка. QuotedString может   содержать произвольные символы, кроме   одинарные кавычки; окружающий сингл   цитаты удалены. UnquotedString   может содержать произвольные символы   кроме одинарных кавычек и оставленных фигурных   скобки. Таким образом, строка, которая должна   результат в отформатированном сообщении   '{0}' можно записать как '' '{' 0} ''   или '' '{0}' ''.

Так что вам нужно написать:

{0}''s brush is {1} centimeters tall
ответил Ralph 15 WedEurope/Moscow2010-12-15T15:02:43+03:00Europe/Moscow12bEurope/MoscowWed, 15 Dec 2010 15:02:43 +0300 2010, 15:02:43
0

Посмотрите javadoc здесь

  

Внутри строки, "'" представляет   одиночная кавычка. QuotedString может   содержать произвольные символы, кроме   одинарные кавычки; окружающий сингл   цитаты удалены. UnquotedString   может содержать произвольные символы   кроме одинарных кавычек и оставленных фигурных   скобки. Таким образом, строка, которая должна   результат в отформатированном сообщении   «{0}» может быть записано как «» {0} »   или "'' '{0}' ''".

ответил Aravind R. Yarram 15 WedEurope/Moscow2010-12-15T15:04:40+03:00Europe/Moscow12bEurope/MoscowWed, 15 Dec 2010 15:04:40 +0300 2010, 15:04:40
0

Вам нужно сделать двойную одинарную кавычку, т.е. кисть {0} имеет высоту {1} ​​сантиметров

ответил Samuel Parsonage 15 WedEurope/Moscow2010-12-15T15:03:10+03:00Europe/Moscow12bEurope/MoscowWed, 15 Dec 2010 15:03:10 +0300 2010, 15:03:10
0

Если вы полностью застряли, как и я (ничего из вышеперечисленного не сработало), вы можете заменить знак апостроф на Юникод: \ u0027. Помните, что вам всегда разрешено использовать символ UTF в вашем файле свойств.

ответил Nestor Milyaev 24 J0000006Europe/Moscow 2016, 19:00:17
0

Добавление к ответу @ Ralph: Вы поймете, что это MessageFormat, когда у вас есть текст вроде

text1=It's too late

против

text2={0}''s too late

text1, вероятно, не будет проходить через MessageFormater (например, у Spring есть разные пути кода, если аргументы переданы или нет), тогда как text2 будет. Так что если вы использовали две одинарные кавычки в text1, они могут /будут отображаться как таковые. Поэтому вам нужно проверить, отформатированы ли какие-либо аргументы или нет, и соответственно использовать одну или две одинарные кавычки.

ответил sorrymissjackson 2 FebruaryEurope/MoscowbTue, 02 Feb 2016 10:32:07 +0300000000amTue, 02 Feb 2016 10:32:07 +030016 2016, 10:32:07
0

Рассмотрите возможность использования плагина редактора свойств (для Eclipse)

http://propedit.sourceforge.jp/index_en.html

ответил Danubian Sailor 15 WedEurope/Moscow2010-12-15T15:25:04+03:00Europe/Moscow12bEurope/MoscowWed, 15 Dec 2010 15:25:04 +0300 2010, 15:25:04
0

Для всех, у кого проблемы с Android в файле string.xml, используйте \ '\' вместо одинарных кавычек.

ответил Uriel Frankel 30 J000000Wednesday14 2014, 21:02:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132