Апостроф не отримує належного перекладу, якщо його помістити в пакет ресурсів


90

Апостроф не отримує належного перекладу, якщо його помістити в пакет ресурсів.

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

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

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


4
+1 Я сам зіткнувся з цією проблемою і написав про неї невеликий допис у блозі. Можливо, він може надати додаткову інформацію для людей, які стикаються з
micha

Відповіді:


120

Вам слід уникнути єдиної лапки як

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

Приємна відповідь. Це вирішило мою проблему одинарними лапками. Спасибі :) +1
Аніш Б.

35

Я впевнений, що проблема полягає не в пакеті ресурсів, а в MessageFormater, який ви використовуєте для друку повідомлення:

З MessageFormater Java Doc :

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

Тому вам потрібно написати:

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

6

Подивіться на javadoc тут

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



5

Додаючи до відповіді @ Ralph: Ви зрозумієте, що це MessageFormatріч, коли у вас є такий текст

text1=It's too late

проти

text2={0}''s too late

text1ймовірно, не буде проходити через MessageFormater (наприклад, spring має різні шляхи коду, якщо аргументи передаються чи ні), тоді як text2би. Отже, якщо ви використовували дві одинарні лапки text1, вони можуть / відображатимуться як такі. Тож вам потрібно буде перевірити, чи не відформатовано якісь аргументи, і відповідно використовувати одну або дві одинарні лапки.


5

Якщо ви повністю застрягли, як і я (нічого з перерахованого не працювало), ви можете замінити знак апострофа на його Unicode: \ u0027. Пам'ятайте, що вам завжди дозволено використовувати символ UTF у файлі властивостей.



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.