7

我在这里遇到了一种问题。

我是法国人,正在开发英文版的 Windows XP。因此,我将区域选项设置为法语,但仍然有英语 UI。

我正在开发一个小型 Java SE 应用程序,并决定使用资源包将其国际化。

为了显示正确的语言,我用这个函数创建了包:

private static ResourceBundle bundle = ResourceBundle
          .getBundle("locale.Strings", Locale.getDefault());

但是 Locale.getDefault() 函数返回区域设置(意思是:法语)而不是系统 UI 语言。结果,我的 UI 在英语环境中默认为法语。好吧,这并不是我所期望的......

有谁知道一种独立于平台的方式来恢复系统 UI 语言?提前致谢 !

编辑:将本地修复为区域设置,谢谢。

4

3 回答 3

7

这是 Windows 中的错误配置。返回系统区域设置,而Locale#getDefault()不是日期/时间格式化区域或位置。

在下面的 Windows XP 特定屏幕截图中,您可以将区域选项语言设置为法语或任何您喜欢的。高级菜单中的下拉菜单实际上设置了系统区域设置,在您的情况下应该设置为英语。

在此处输入图像描述

诚然,这在 Windows XP 中解释得不好,Windows 7 做得更好一些:

在此处输入图像描述

于 2012-06-02T13:41:38.907 回答
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"));

但是,在这种情况下,我希望与默认语言环境有一些相似之处......

于 2012-06-02T20:19:51.757 回答
0

感谢您的建议,我尝试了一些事情,这是我的观察:

  • 如果您使用的是 Java 6 而不是 Java 7,那您就完蛋了。
  • 如果您使用的是 Java 7,您应该按照 BalusC 的说明进行操作:更改区域和语言设置中的设置。之后,Locale.getDefault() 将默认返回显示语言,如果您将其设置为英语,则表示英语。为了确保这一点,您可以通过调用 Locale.getDefault(Locale.Category.DISPLAY) 创建您的语言环境
于 2012-06-03T08:54:16.760 回答