创建一个会话范围的托管bean,如下所示:
@ManagedBean @SessionScoped public class LocaleManager { private Locale locale; @postconstruct public void init { locale = FacesContext.getCurrentInstance .getExternalContext .getRequestLocale ; } public Locale getLocale { return locale; } public String getLanguage { return locale.getLanguage ; } public void setLanguage(String language) { locale = new Locale(language); FacesContext.getCurrentInstance .getViewRoot .setLocale(locale); } }
要设置视图的当前语言环境,请将其绑定到<f:view>主模板的。
<f:view locale="#{localeManager.locale}">
要对其进行更改,请将其绑定到<h:selectOneMenu>带有语言选项的。
<h:form> <h:selectOneMenu value="#{localeManager.language}" onchange="submit "> <f:selectItem itemValue="en" itemLabel="English" /> <f:selectItem itemValue="nl" itemLabel="Nederlands" /> <f:selectItem itemValue="es" itemLabel="Español" /> </h:selectOneMenu> </h:form>
要改善您的国际化页面的SEO(否则它将被标记为重复内容),请同时绑定语言<html>。
<html lang="#{localeManager.language}">解决方法
如何根据初始浏览器请求检测应用程序的语言环境,并在整个浏览会话中使用它,直到用户专门更改语言环境,以及如何在其余会话中强制使用此新语言环境?
标签: #语言 #localeManager #locale
评论列表