Интернационализация Java (i18n) Библиотеки/Рамки - программирование
Подтвердить что ты не робот

Интернационализация Java (i18n) Библиотеки/Рамки

Моя организация собирается приступить к длительному процессу интернационализации (i16g?) своего корпоративного сайта. Веб-сайт представляет собой сочетание Java EE (JSP/Servlets, EJB) и статического содержимого, перенесенного с WCM (Documentum).

Хотя у меня есть опыт использования "встроенного" механизма использования ResourceBundle вместе со связанными файлами свойств для каждого языка/локали (содержащего подход "KEY = Translated value" ), где мы просто ссылаемся на значение KEY где мы хотим, чтобы переведенный текст появился.

Мой директор упомянул, что он использовал другой подход в предыдущей организации, в которой они использовали стороннюю библиотеку (он не помнит фактическое имя), который включал фактический [английский] текст на веб-странице (чтобы помочь разработчикам), который был заменен во время выполнения переведенным содержимым из файла конфигурации xml. (кто-нибудь знает, в какой библиотеке это будет?)

Мне интересно, какие другие подходы/библиотеки/рамки могут быть там, чтобы облегчить это.

Спасибо

4b9b3361

Ответ 1

Вероятно, ваш босс имел в виду gettext, как сказал @Pawel Dyda, но cosmopolitan может также вас интересует.

Ответ 2

Когда я слышу, что вы используете ResourceBundle s, я вижу что-то вроде этого:

ResourceBundle rb = ResourceBundle.getBundle("messages", locale);
String someString = rb.getString("some.key");

Если это ваш подход к страницам Java Server (используя такие фрагменты в скриптах), это неверно. Вместо этого вы должны использовать теги сообщений JSTL или Spring.

Что касается вашего запроса, я считаю, что они использовали Gettext (извините ссылку, поскольку у меня заканчивается время). Это не обязательно лучший подход. JSTL-подход является наиболее распространенным для JSP, и вы должны придерживаться его, если у вас нет оснований для этого.

Ответ 3

Моя компания также поддерживает библиотеку GNU gettext для Java (и очень скоро с расширениями, нацеленными на Scala).

Он не только поддерживает всю доброту GNU gettext, но и упрощает вывод и ввод даты/времени и валюты, включает средства для использования форматирования wiki в переводах (так что вы можете выводить HTML полужирным шрифтом на слово, например), форматирование java-сообщений, обобщенная поддержка "escape" (поэтому выход может быть автоматически экранирован для включения, скажем, в HTML) и округление валюты.

Он с открытым исходным кодом, и в настоящее время на github на https://github.com/awkay/easy-i18n/

Ответ 4

Стоит посмотреть на http://alexsexton.com/blog/2012/03/the-ux-of-language/, в нем есть хорошее объяснение идеи gettext и ограничений дизайна gettext - лучший подход к gettext - это формат сообщений ICU, это то, на чем основан класс JDK MessageFormat, на http://site.icu-project.org/home есть также библиотека javascript, основанная на сообщении ICU формат https://github.com/SlexAxton/messageformat.js

Ответ 5

Надеюсь, еще не поздно предложить еще одно решение: https://github.com/resource4j/resource4j

В этой библиотеке есть интеграция с визуализатором веб-страниц Thymeleaf, который решает указанную проблему: вы включаете в шаблон страницы текст на английском языке и затем заменяете его локализованной версией во время выполнения.