JDeveloper и Интернационализация - PullRequest
0 голосов
/ 06 июля 2011

Я обнаружил трудности для реализации этого в простом веб-приложении. Я помещаю файлы l10n.properties в корневой каталог WEB-INF, но не понимаю, как их можно прочитать. Я использовал PropertiesResourceBundle.getBundle (baseName, locale), но я не понимаю, что я должен написать для baseName. Я прочитал в какой-то ветке, что я должен поместить локальные файлы в classpath: это правильно? Где я могу установить classpath в JDeveloper?

заранее спасибо

1 Ответ

0 голосов
/ 07 июля 2011

Если вам не нужно читать файл ресурсов на стороне сервера (это означает, что он не находится непосредственно в веб-интерфейсе), вы не должны ни при каких обстоятельствах использовать ResourceBundle.getBundle() и особенно не PropertiesResourceBundle.getBundle(), который является его подклассом.

В зависимости от типа вашего приложения (будь то JSP или JSF) доступ к ресурсам будет разным.
В случае простой JSP, вы бы использовали JSTL и теги fmt: message для перевода пользовательского интерфейса, как здесь и бесчисленные вопросы о StackOverflow (просто используйте поисковую систему в правом верхнем углу экран).
В случае JSF / Facelets вам необходимо установить соответствующие переменные в Face-config.xml и просто использовать допустимые запросы языка выражений. Подробнее об этом можно прочитать в этом превосходном уроке .

Возвращаясь к исходному вопросу, базовое имя, которое вы передаете ResourceBundle.getBundle() (убедитесь, что не использует подклассы , если вы действительно не знаете, что делаете), связано с путем к классу, который вы используете. доступ к нему из (это означает, что это должен быть тот же исходный каталог). Другое дело, что пройти здесь. Предполагая, что ваши имена файлов ресурсов похожи на messages.properties, messages_de.properties, messages_es_MX.properties и т. П., Вы просто поместите «messages» для baseName, так что рассматриваемый вызов будет выглядеть как ResourceBundle.getBundle("messages", theLocale);, где theLocale - ваш Locale объект - этот объект должен быть обнаружен (в мире JSP это немного сложно, в JSF / Facelets это так же просто, как Locale theLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale();). Вот и все.

...