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

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

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

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

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

Ответ 1

Вам следует избегать одиночной кавычки как

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

Ответ 2

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

Из MessageFormater java doc:

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

Итак, вам нужно написать:

{0}' brush is {1} centimeters tall

Ответ 3

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

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

Ответ 4

Вам нужно удвоить одиночную кавычку i.e. {0} 'щетка {1} сантиметров в высоту

Ответ 5

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

text1=It too late

против

text2={0}' too late

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

Ответ 6

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

Ответ 8

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