JSF2.0国际化不在服务器上工作

时间:2012-07-31 09:50:21

标签: spring jsf tomcat localization internationalization

我使用JSF 2.0和Spring 3.0.2以及tomcat 7.0.14.0作为服务器。我在更改网站语言时遇到问题。所有代码都在我的本地服务器上运行良好。但是当我在服务器上部署时,语言更改不起作用。它会自动选择意大利语作为默认语言。当我点击另一种语言时,没有任何变化。 这是我的bean代码:

            @ManagedBean(name="language")
           @SessionScoped
          public class LanguageBean implements Serializable{

private static final long serialVersionUID = 1L;

private String localeCode;





private static Map<String,Object> countries;
    static{
    countries = new LinkedHashMap<String,Object>();
    countries.put("English", Locale.ENGLISH); //label, value

            countries.put("Italian", Locale.ITALIAN);
}

public LanguageBean() {
    countries = new LinkedHashMap<String,Object>();


            countries.put("English", Locale.ENGLISH); //label, value
            countries.put("Italian", Locale.ITALIAN);

}

public Map<String, Object> getCountriesInMap() {
    return countries;
}


public String getLocaleCode() {
    return localeCode;
}


public void setLocaleCode(String localeCode) {
    this.localeCode = localeCode;
}


    public void countryLocaleCodeChanged(ValueChangeEvent e){

    String newLocaleValue = e.getNewValue().toString();


    for (Map.Entry<String, Object> entry : countries.entrySet()) {
            System.out.println("newLocaleValue "+newLocaleValue+"\n entry.getValue().toString()"+entry.getValue().toString());
        if(entry.getValue().toString().equals(newLocaleValue)){

            FacesContext.getCurrentInstance()
                .getViewRoot().setLocale((Locale)entry.getValue());
                    FacesContext context = FacesContext.getCurrentInstance(); 
                    System.out.println("Default : "+context.getApplication().getDefaultLocale()); 

                    context.getApplication().setDefaultLocale((Locale)entry.getValue());


        }
    }

}

这是config.xml ::

    <locale-config>
        <default-locale>en</default-locale>
    </locale-config>
    <resource-bundle>
        <base-name>com.mad_u.welcome</base-name>
        <var>msg</var>
    </resource-bundle>

请给我一些想法。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我的属性文件是这样的:

  • message_en_US.properties
  • message_es_ES.properties
  • message_eu_ES.properties

它在我的本地服务器上工作但是将网络上传到我的服务器语言更改不起作用,所以我更改了这个:

        countries.put("Castellano", new Locale("es"));
        countries.put("Euskara", new Locale("eu"));
        countries.put("English", new Locale("en")); 

<locale-config>
            <default-locale>es</default-locale>
            <supported-locale>es</supported-locale>
            <supported-locale>eu</supported-locale>
            <supported-locale>en</supported-locale>
        </locale-config>

  • message_en.properties
  • message_es.properties
  • message_eu.properties