我在这里遇到了一个问题。
我是法国人,正在使用英文版的Windows XP。因此,我将区域选项设置为法语,但仍然具有英语UI。
我正在开发一个小型Java SE应用程序,并决定使用资源包将其国际化。
要显示正确的语言,我使用此功能创建包:
private static ResourceBundle bundle = ResourceBundle
.getBundle("locale.Strings", Locale.getDefault());
但是Locale.getDefault()函数返回区域设置(意思是:法语),而不是系统UI语言。因此,我的UI在英语环境中默认为法语。好吧,那不是我所期待的......
有谁知道恢复系统UI语言的平台无关方式? 提前谢谢!
修改:修复本地到语言环境,谢谢。
答案 0 :(得分:7)
这是Windows中的错误配置。 Locale#getDefault()
返回系统区域设置,而不是日期/时间格式化区域或位置。
在下面的Windows XP特定屏幕截图中,您可以将区域选项和语言设置为法语或任何您喜欢的内容。 Advanced 菜单中的下拉列表实际上设置了系统区域设置,在您的情况下应该设置为英语。
不可否认,这在Windows XP中解释不足,Windows 7做得更好一些:
答案 1 :(得分:3)
我无法尝试(因为我倾向于避免微软制造的任何东西),但请看看这些:
需要Java 7:
Locale uiLocale = Locale.getDefault(Locale.Category.DISPLAY);
无论如何,这应该用于获取翻译(从Java 7开始)。
如果这不是很有帮助,我会尝试:
System.out.println(System.getenv("LC_MESSAGES"));
System.out.println(System.getenv("LANG"));
System.out.println(System.getenv("LANGUAGE"));
但是,在这种情况下,我希望与默认的Locale有一些相似之处......
答案 2 :(得分:0)
由于你的建议,我尝试了一些事情,这是我的观察: