Если вам не нужно читать файл ресурсов на стороне сервера (это означает, что он не находится непосредственно в веб-интерфейсе), вы не должны ни при каких обстоятельствах использовать 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();
). Вот и все.