0

我使用 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>

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

4

1 回答 1

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
于 2013-01-29T08:31:04.107 回答