【发布时间】:2014-09-01 00:59:33
【问题描述】:
在我们的 Eclipse 应用程序中,我们使用该方法通过专用的 nls 包、messages.java 和本地化的 messages_xx_XX.properties 文件来提供本地化。这通常非常好用:当在德语 Windows 上运行时,我们会得到德语字符串、英语 Windows 上的英语字符串等。
现在的请求是,用户应该可以切换到不同的语言。因此,即使他的 Windows 设置为德语,他也应该能够运行我们的软件,例如英文字符串。
这看起来并不太难,因为那里有几个文档,描述了为 Java 应用程序切换语言环境的各种方法。例如。通过使用命令行开关 -Duser.language 和 -Duser.country。或者使用此 stackoverflow 帖子中概述的方法:How to set eclipse console locale/language。
eclipse 的另一种方法应该是使用 eclipse 的 -nl 开关,例如“eclipse.exe -nl en”。
Nooow:这些方法都不起作用!无论你做什么,例如一个德语 Windows 系统,无论您使用哪种方法,您总能得到德语字符串。
挖掘我发现的问题,绑定到相应的 messages_xx_XX.properties 文件发生在“buildVariants”方法的 NLS.class 中。在此方法中调用“Locale.getDefault”,并从返回值中提取国家和语言代码并用于组合各个 .properties 文件的名称。
不幸的是,Locale.getDefault 在显示语言设置为德语的 Windows 系统上总是返回 de_DE(请参阅http://blog.ej-technologies.com/2011/12/default-locale-changes-in-java-7.html)。因此,无论您做什么,似乎都无法通过使用上述任何一种方法来更改 Java 应用程序的默认语言环境。
或者有什么办法吗?
如果我们知道如何以编程方式重置 org.eclipse.osgi.util.NLS 中的 nlSuffixes 字段,这也会对我们有所帮助,因此我们可以尝试触发翻译属性文件的重新加载。
【问题讨论】:
-
这篇文章 [Java 7 中的默认语言环境更改](blog.ej-technologies.com/2011/12/…) 有帮助吗?