客户端和服务器具有不同的区域设置 - 回退机制

时间:2012-03-13 15:34:42

标签: java jboss

我有运行fr_CH语言环境的jboss服务器和运行de_CH语言环境的应用程序客户端。我有两个包 - messages.properties(root)和messages_fr_CH.properties。这很奇怪,但是在服务器端,ResourceBundle.getBundle(“bundleLocation”,新的Locale(“de”,“CH”))返回fr_CH语言环境而不是root bundle的包。

我唯一想到的是在服务器端Locale.getDefault()是“fr_CH”,但是如果我做对了,由于优雅降级的概念标准java回退机制不应该关心它...... < / p>

任何其他想法可能是什么问题?

谢谢, 扬

1 个答案:

答案 0 :(得分:1)

你是对的,这种行为是因为默认的语言环境。看看javadoc ResourceBundle.getBundle

  

getBundle使用基本名称,指定的区域设置和默认值   locale(从Locale.getDefault获取)生成一个序列   候选包名称。如果指定的语言环境的语言,国家,   和变量都是空字符串,然后基本名称是唯一的   候选包名称。否则,生成以下序列   从指定语言环境的属性值(language1,   country1和variant1)以及默认语言环境(language2,   country2和variant2):

baseName + "_" + language1 + "_" + country1 + "_" + variant1
baseName + "_" + language1 + "_" + country1
baseName + "_" + language1
baseName + "_" + language2 + "_" + country2 + "_" + variant2
baseName + "_" + language2 + "_" + country2
baseName + "_" + language2
baseName

所以你的案例是baseName + "_" + language2 + "_" + country2