0

这是一个非常简单的问题,我只是不明白。

我使用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.propertiesSource 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”。

4

0 回答 0