我有运行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>
任何其他想法可能是什么问题?
谢谢, 扬
答案 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