интернационализация веб-приложения - PullRequest
0 голосов
/ 20 октября 2010

работая над интернационализацией веб-приложения, я немного заблокирован, потому что не знаю, как сделать свои .properties динамическими. Я имею в виду, чтобы автоматически получать статический текст из приложения. Теперь у меня есть, например, этот MessageBundle_de_DE.properties:

greetings=Hallo!  
inquiry=Wie geth's?   
farewell=Tchüs!

Но это статично, я написал эти три пары (ключ, значение).
Как я могу сделать мои ключи в соответствии с моим заявлением? Я предполагаю, что это возможно, что касается документации .

Использование Spring Framework и технологии JSP.

Заранее спасибо, я знаю, что это, возможно, слишком общий вопрос.

Ответы [ 5 ]

2 голосов
/ 21 октября 2010

Поскольку вы используете spring, добавьте следующий bean-компонент в контекст приложения:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="/WEB-INF/messages/messages" />
    <property name="cacheSeconds" value="0" />
</bean>

В папке / WEB-INF / messages создайте все нужные вам файлы messages.properties, то есть messages_en_GB.properties, messages_DE.properties и т. Д.

Тогда в вашем jsps используйте следующий тег пружины:

<spring:message code="some.property.name" />

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

<!-- Saves a locale change using a cookie -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
<mvc:interceptors>
<!-- Changes the locale when a 'locale' request parameter is sent; e.g. /?locale=de -->
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors>

Тогда вам просто нужны ссылки, которые содержат свойство локали, такое как /?local=de, чтобы перейти на немецкий перевод.

1 голос
/ 20 октября 2010

Если вы не используете каркас веб-приложений, я бы предложил использовать Spring Framework , который предоставляет полезные функции для веб-приложений, включая интернационализацию.

0 голосов
/ 19 января 2016

Для интернационализации приложений я реализовал Компилятор сообщений , который создает файлы пакета ресурсов и определения констант в виде перечислений Java или статических финальных строк для ключей из одного исходного файла.Таким образом, константы могут использоваться в исходном коде Java, что намного безопаснее, чем использование простых строк.Компилятор сообщений не может использоваться только для Java.Он также создает файлы ресурсов и константы для Objective-C или Swift и может быть расширен для других сред программирования.

0 голосов
/ 21 октября 2010

Ищете простой и мощный способ интернационализации ваших приложений? Попробуйте gettext: http://www.gnu.org/software/gettext/manual/gettext.html он используется большинством программного обеспечения с открытым исходным кодом для Linux, но он также может работать с Java. Шаги просты:

  • Напишите вашу программу нормально, как если бы она была не локализована: System.out.println («Hello world !!!»)
  • Где-то в коде создайте открытый статический класс с именем (скажем) S с помощью метода _. Имя этого метода должно быть коротким, так как будет использоваться часто. Он должен делегировать API Gettext или ResourceBundle для получения сообщения.
  • Все строки для локализации окружают с помощью _ (...): System.out.println (_ ("Hello world !!!"))
  • Запустите команду gettext, чтобы извлечь все такие строки _ 1012 *
  • Перевести извлеченный файл на целевые языки
  • Запустите gettext еще раз, чтобы скомпилировать и проверить такие файлы

Это позволяет очень легко добавить локализацию в любое приложение (будет ли оно написано на Java, C, Python и т. Д.).

0 голосов
/ 21 октября 2010

Лучший способ усвоить ваше приложение, если вы не используете какую-либо платформу, - это использовать базу данных для хранения всех ваших переводов.Просто простой класс, который будет загружать переводы из БД по ключу, и ваша проблема решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...