这是一个非常简单的问题,我只是不明白。
我使用messages.properties
文件和Messages
类(由 Eclipse 生成)进行本地化。我有这个代码:
public class LocaleTest {
public static void main(String[] args) {
System.out.println(Messages.getString("LocaleTest.LocaleTestMessage")); //$NON-NLS-1$
}
}
还有两个属性文件:
消息属性
LocaleTest.LocaleTestMessage=这是语言环境测试。
messages_es.properties
LocaleTest.LocaleTestMessage=Esta es la prueba de locales。
和文件由 Eclipse 的“Externalize Strings”函数(messages.properties
Source → Externalize Strings...)创建。Messages.java
当我在 Eclipse 中(通过标准Ctrl+ F11)在西班牙语系统上运行它时,它会按预期显示“Esta es la prueba de locales”。但是当我使用默认选项导出到 .jar 并从命令行运行时,它会打印“这是语言环境测试”。
在 GUI 应用程序中,整个应用程序始终使用主要语言(来自 的字符串messages.properties
)。
我知道文件正在正确导出,因为如果我将以下内容添加到消息类的顶部,它就可以工作:
static {
Locale.setDefault(new Locale("es"));
}
如此处所述,我已将“非 unicode 程序的默认语言”设置为“西班牙语”。
那么,为什么会发生这种情况,我该如何解决呢?
编辑:打印Locale.getDefault().getLanguage()
从命令行产生“英语”。在 Eclipse 中,它打印“español”。