0

我正面临本地化的奇怪行为。我的应用程序中有两种语言 - 英语和斯洛伐克语。在我当地的 Glassfish 切换语言环境非常有效。但是部署在 Jelastic Glassfish 上的同一个应用程序始终是英文的。切换语言环境不起作用。我已经调试了远程应用程序和 facescontext (FacesContext.getCurrentInstance().getViewRoot().getLocale() 和 FacesContext.getCurrentInstance().getExternalContext().getRequestLocale()) 返回正确的 sk 语言环境,但页面仍然是英文. 在语言菜单中选择了斯洛伐克语(第二个选项)!

两个 Glassfishes 都在 3.1.2.2 版本中,带有 Mojarra 2.2.7 和 Primefaces 5.0,在 JDK7 上运行。本地 GF 在 Win7 上运行,在 Linux 上远程运行(CentOS?)并且它是集群的(也许这就是原因?)

面孔-conf.xml

<locale-config>
  <default-locale>en</default-locale>
  <supported-locale>sk</supported-locale>
</locale-config>
<resource-bundle>
  <base-name>Bundle</base-name>
  <var>bundle</var>
</resource-bundle>

登录.xhtml

<f:view locale="#{loginBean.locale}">
  ...
  <p:outputLabel value="#{bundle.language}: "/>
  <p:selectOneMenu value="#{loginBean.language}" id="loginLocale">
    <f:selectItem itemValue="en" itemLabel="English" />
    <f:selectItem itemValue="sk" itemLabel="Slovensky" />
    <p:ajax update="@all"/>
  </p:selectOneMenu>
  ...
</f:view>

登录Bean.java

@ManagedBean(name = "loginBean")
@SessionScoped
public class LoginBean implements Serializable{

  private Locale 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);
  }
}

感谢您的任何帮助

迈克尔

4

1 回答 1

1

我找到了解决方案,但我不确定为什么会这样。我的斯洛伐克捆绑文件的名称是 Bundle_sk_SK.properties,我已将其重命名为 Bundle_sk.properties,现在它可以工作了。

迈克尔

于 2014-09-18T22:38:23.280 回答