为了国际化,配置了几个语言文件,但是该用到Struts默认语言时却总去使用***_en.properties,而不是去使用默认的语言文件。
如果删掉_en的文件后,当浏览器语言设置为其他语言时,就会正常地去使用默认的语言文件了。
太奇怪了,为什么呢?
谢谢。

解决方案 »

  1.   

    浏览器的语言设置,比如IE的Internet选项->语言,把中文(中国)[zh-cn]或者中文[zh]移动或添加到第一个
      

  2.   

    没看清楚,可能你已经知道怎么解决了。产生这个的原理和java.util.Locale有关。所有的资源束(java.util.ResourceBundle)都是用Locale来做国际化的。而Struts的处理某个客户请求时,将浏览器的语言设置作为对应的Locale
      

  3.   

    不好意思,我可能没说清楚
    比如,我有几个资源文件
    applicationResources.properties
    applicationResources_en.properties
    applicationResources_fr.properties
    当我将浏览器语言设置为汉语(zh-CN)后,我期望的是应该使用默认的资源文件applicationResources.properties,但实际上从显示的文字内容看,使用的却是英文的applicationResources_en.properties。
    而且如果我把applicationResources_en.properties删掉,就正常了,使用的就是默认的资源文件了。
    很诡异……
      

  4.   

    这个说的很清楚啦,看下程式里面 Local是怎么设置的,还是说用默认的。
      

  5.   

     浏览器会根据当前默认语言调用不同的属性文件,如果不行话,你可以在后台设置读取部署文件
     request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.CHINA);
      

  6.   

    没有改动locale啊,页面上特意读取了request.getLocale的值也是跟浏览器设置的语言一致的。资源文件里并没有对应的语言文件,应该去按照默认的资源文件显示,可是问题是却按照英文的资源文件显示了。
      

  7.   

    struts.properties默认找这个,其它的调用
    否则默认显示的是英文
      

  8.   

    哦?必须是叫struts.properties这个名字么?我已经在struts-config.xml里面配置了<message-resources parameter="applicationResources" />了啊还需要加一个struts.properties?内容跟默认的applicationResources.properties一样??
    多谢!
      

  9.   


    实在找不到就设置这个。建议看一下有没有在struts-config中<controller>中设置过locale参数为false,而且服务器的系统语言-区域设置为英文。最后确保你的properties本身没有搞错
      

  10.   

    没有设置过struts-config中没有设置过locale参数为false
    服务器的语言应该是英文。
    我越来越糊涂了,为什么只要有_en文件的时候就拿它当默认呢?我不想要这样的效果呀。:(
      

  11.   

    我越来越糊涂了,为什么只要有_en文件的时候就拿它当默认呢?我不想要这样的效果呀。:(不是这个原因,无论有没有_en文件,默认都是_en。
    只是你删掉_en文件以后,struts再随便找一个,正好就找到_zh了。不信你可以删掉_en和_zh,只留另外一个文件,那struts就用它了。
    我以前搞Struts的时候似乎也碰到类似的问题,但是我不记得最后怎么弄好了。遗憾!