Как сохранить файлы свойств Java удобочитаемыми - PullRequest
0 голосов
/ 20 ноября 2010

Grails также использует файлы свойств Java.

Я могу использовать Google translate для первоначального перевода моего файла message.properties, даже на такие языки, как китайский.Я вижу действительные китайские символы в моем новом файле messages_zh_CN.properties, когда я просматриваю его в Netbeans или notepad ++.

Но как только файл переходит в svn, когда он извлекается, китайские символы не видныбольшеВсе, что вы можете увидеть, это кодировка ISO 8859-1.Например:

default.paginate.prev =\u4e0a\u4e00\u9875
default.paginate.next =\u4e0b\u4e00\u6b65
default.boolean.true =\u771f
default.boolean.false =\u5047

Он все еще работает после запуска приложения.И Google переводчик - отличный способ перевести перевод.Но после этого файл свойств необходимо отправить носителю для редактирования.

Так как же вернуть файл свойств в ISO 8859-1 обратно для чтения человеком?Как это:

default.paginate.prev =上一页
default.paginate.next =下一步
default.boolean.true =真
default.boolean.false =假

Ответы [ 4 ]

1 голос
/ 20 ноября 2010

Я бы пошел за Thorbjørn Ravn Andersen ответ: Файл .properties был отредактирован в специализированном редакторе, который автоматически сохраняет символы Юникода в его записи ASCII (\ uXXXX).

Александр Погребняк упомянул такой редактор, и они довольно распространены в "мире Java".

mfloryan упоминает native2ascii инструмент (который поставляется с JDK), который выполняет преобразование под капотом.


Теперь некоторые сведения обо всем этом:

Механизмы Java i18n в основном основаны на классе PropertyResourceBundle, который ApiDoc сообщает:

Для создания экземпляра PropertyResourceBundle из InputStream требуется, чтобы входной поток былзакодировано в ISO-8859-1.В этом случае символы, которые не могут быть представлены в кодировке ISO-8859-1, должны быть представлены Unicode Escapes

Таким образом, в качестве обходного пути (!) В мире Java вы можете использоватьnative2ascii в JDK для преобразования файлов .properties или, в качестве альтернативы, использования специализированного редактора, который сохраняет «Unicode Escape», но позволяет редактировать действительные символы Unicode.

В * 1037Платформа * Spring , напротив, механизмы i18n по умолчанию основаны на классе ResourceBundleMessageSource Spring, который полностью поддерживает Unicode. Grails 'Механизмы i18n основаны на Spring.

Значение по умолчанию Grails grails.enable.native2ascii = true предназначено для включения смешанных сред Spring / Grails и Java.- Вам не понадобится ни инструмент native2ascii, ни специальный редактор файлов .properties , если вы не используете собственный ResourceBundle.getBundle("foo").getKey("bar") Java, и если вы не работаете с "классической Java" JSTL илиТеги JSF.

С Grails и Spring вы можете использовать файлы Unicode .properties такими, какие они есть.

1 голос
/ 20 ноября 2010

Я думаю, что ваша диагностика неверна.

Синтаксис \ uXXXX - это то, что используется редактором, учитывающим свойства, для сохранения последовательностей, не относящихся к ASCII, для обеспечения его устойчивости для схем кодирования и платформ, и я думаю,это то, что здесь произошло.

Пожалуйста, проследите свои шаги, чтобы увидеть, какой редактор сохраняет в этой форме, а затем либо продолжайте использовать этот редактор (и другие \ uXXXX-осведомленные), либо держитесь подальше от него.Вы можете попросить своих переводчиков-носителей использовать тот же редактор, что и вы.

1 голос
/ 20 ноября 2010

Для Eclipse есть этот плагин «Редактор свойств» -> http://propedit.sourceforge.jp/index_en.html

Он делает именно то, что вы ищете, делая перевод unicode-to-glyph-and-back за кулисы.

0 голосов
/ 20 ноября 2010

Я не имею ничего общего с SVN - я не думаю.В Grails есть опция конфигурации, которая диктует это поведение.В файле Config.groovy вы найдете следующую строку:

// enabled native2ascii conversion of i18n properties files
grails.enable.native2ascii = true

Это означает, что команда native2ascii применена к файлу свойств и преобразует их в нотацию Unicode.Вы можете установить этот параметр на false, если хотите сохранить исходную кодировку на родном языке.Вы также всегда можете перевернуть файл, используя команду native2ascii -reverse.

...