我有一个应用程序,我正在尝试设置国际化可用性。
这是我的 faces-config.xml:
<application>
<locale-config>
<default-locale>lt</default-locale>
<supported-locale>en</supported-locale>
<supported-locale>de</supported-locale>
</locale-config>
<resource-bundle>
<base-name>application</base-name>
<var>msg</var>
</resource-bundle>
</application>
我有三个属性文件:
application_lt.properties
application_en.properties
application_de.properties
豆类:
@ManagedBean(name = Beans.LOCALE_BEAN)
@SessionScoped
public class LocaleBean extends BaseBean implements Serializable {
private String lang;
public String getLang() {
return lang;
}
public void setLang(String lang) {
this.lang = lang;
}
}
动作类:
@ManagedBean(name = "localeAction")
@SessionScoped
public class LocaleAction extends BaseAction implements Serializable {
public void changeLocale() {
LocaleBean localeBean = getBean(Beans.LOCALE_BEAN);
String language = localeBean.getLang();
FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale(language));
}
}
要更改语言环境,我正在使用 commandLink:
<h:commandLink action="#{localeAction.changeLocale}">
<f:setPropertyActionListener target="#{localeBean.lang}" value="en"/>
English
</h:commandLink>
<h:commandLink action="#{localeAction.changeLocale}">
<f:setPropertyActionListener target="#{localeBean.lang}" value="lt"/>
Lithuanian
</h:commandLink>
第一个问题:
我已经定义我的默认语言环境是“lt”:lt。为什么当我启动我的应用程序文本值是从 application_en.properties 而不是从 application_lt.properties 加载的?
第二个问题:
当我执行 commandLink 操作时,语言环境会根据我选择的语言环境而变化。但是执行该操作是单击一次,第二次单击应用程序的任何其他链接也可以,当我第三次单击应用程序的任何链接时,文本值位于 application_en.properties。似乎语言环境以某种方式发生了变化......
有任何想法吗?