ResourceBundle只能理解“en”语言环境

时间:2011-08-15 07:56:55

标签: java locale

我创建了一个区域设置,并尝试使用所述区域设置创建一个ResourceBundle。如果我使用芬兰语语言环境,ResourceBundle似乎不接受/理解它 - 而是获得一个null语言环境。使用英语语言环境时,它似乎工作正常。

Locale obj = new Locale("en");
ResourceBundle resource = ResourceBundle.getBundle("web_resources", obj);
log.debug(resource.getLocale());
log.debug(obj);

记录“en”,“en”。

Locale obj = new Locale("fi");
ResourceBundle resource = ResourceBundle.getBundle("web_resources", obj);
log.debug(resource.getLocale());
log.debug(obj);

记录“”,“fi”。

我还测试了fr(法语)和德语(de)语言环境 - 它们也不起作用。添加国家/地区代码似乎没有帮助。我错过了什么?

2 个答案:

答案 0 :(得分:1)

您在类路径的根目录中是否有web_resources_fi.class的web_resources_fi.properties?如果没有,那么ResourceBundle.getBundle将查找web_resources.class或web_resources.properties(在查找具有附加到基本名称的默认语言环境的此类文件之后)。

有关此方法如何运作的详细信息,请参阅http://download.oracle.com/javase/6/docs/api/java/util/ResourceBundle.html#getBundle%28java.lang.String,%20java.util.Locale,%20java.lang.ClassLoader%29

答案 1 :(得分:0)

我在大约一个月前发现了这个问题。资源文件具有错误的字符编码。如果我没记错的话,该文件应该是UTF-8,但在某些时候编码已经改为ISO 8859-4。

这是一个愚蠢的错误,但却是一个宝贵的教训。