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