我创建了一个区域设置,并尝试使用所述区域设置创建一个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)语言环境 - 它们也不起作用。添加国家/地区代码似乎没有帮助。我错过了什么?
答案 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。
这是一个愚蠢的错误,但却是一个宝贵的教训。