【发布时间】:2013-11-24 15:02:25
【问题描述】:
我想将我的 jsf web 项目的默认位置设置为英文,所以 我做了以下事情:
faces-config.xml
<application>
<locale-config>
<default-locale>en_EN</default-locale>
<supported-locale>de_DE</supported-locale>
</locale-config>
<resource-bundle>
<base-name>de.hof.tschuwwa.resources.messages</base-name>
<var>msg</var>
</resource-bundle>
</application>
我的 src 文件夹 de.hof.tschuwwa.resources 和里面有一个包
在那个包中,我有两个属性文件:
messages_de_DE.properties
messages_en_EN.properties
我在一个小的 xhtml 文件中对其进行了测试:
<h:body>
<ui:composition template="/templates/master.xhtml">
<ui:define name="header">
<h:form>
<h:commandButton action="#{navigationService.toLogin}" value="#{msg['login']}" />
<h:commandButton action="#{navigationService.toRegister}" value="#{msg['register']}" />
</h:form>
</ui:define>
</ui:composition>
</h:body>
当我启动我的应用程序时,它显示的是德国价值观,而不是 英语价值观。我希望默认语言是英语。
如何设置我的默认语言? faces-config.xml 默认语言环境 好像没用。
我还需要知道如何更改本地化。我写了这个小 服务:
@Named
@SessionScoped
public class LanguageService implements Serializable {
private static final long serialVersionUID = 1L;
public void changeLanguage(String language) {
FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale(language));
}
}
并尝试在表单中使用以下按钮:
<p:commandButton id="english" value="English" action="#{languageService.changeLanguage('en')}" immediate="true" />
<p:commandButton id="german" value="Deutsch" action="#{languageService.changeLanguage('de')}" immediate="true" />
但是当我使用它们时什么也没发生。
【问题讨论】:
-
您的浏览器是否将默认语言环境设置为 DE?
-
即使我将浏览器默认本地更改为英语,我的网络应用也会加载所有德语消息
-
您确定 en_EN 语言环境存在吗?我 90% 确定使用 en_US 或 en_GB 时一切都会正常工作。当然还有重命名属性文件。
标签: jsf-2 localization