我一直在尝试使用选择框动态更改我的JSF应用程序的语言环境。但是,只有在我更改了faces-config.xml中的设置时,才会更改区域设置。帮助我.. enter code here
<application>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
<resource-bundle>
<base-name>com.messages.messages_en</base-name>
<var>msg</var>
</resource-bundle>
</application>
我的价值改变听众是,
public void countryLocaleCodeChanged(ValueChangeEvent e){
String newLocaleValue = e.getNewValue().toString();
//loop country map to compare the locale code
for (Map.Entry<String, Object> entry : countries.entrySet()) {
if(entry.getValue().toString().equals(newLocaleValue)){
FacesContext.getCurrentInstance()
.getViewRoot().setLocale((Locale)entry.getValue());
}
}
答案 0 :(得分:0)
我发现了错误。问题在于faces-config.xml文件中的设置。正确的设置如下..
<application>
<locale-config>
<supported-locale>en</supported-locale>
<supported-locale>fr</supported-locale>
</locale-config>
<resource-bundle>
<base-name>com.messages.messages</base-name>
<var>msg</var>
</resource-bundle>
</application>
在上面的代码中,base-name是属性文件的位置。在我的示例中,包名称是com.messages,属性文件是消息。在这里,我采用了两种英语和法语语言环境。我选择的默认语言环境是英语(en)。根据用户选择的语言环境,它会选择messages_en.properties或messages_fr.properties。