【问题标题】:How to set different Locale when using org.eclipse.osgi.util.NLS approach使用 org.eclipse.osgi.util.NLS 方法时如何设置不同的语言环境
【发布时间】: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 eclipse locale


【解决方案1】:

自己找到了解决办法:

  1. 相当棘手:它不适用于处于调试模式的 Eclipse 内的 Eclipse 应用程序。您需要导出您的应用程序,然后通过 eclipse 可执行文件运行它!
  2. 影响 NLS 方法的语言环境的设置取自 eclipse 框架属性“osgi.nl”。
  3. 它的工作方式是,将此属性放入 eclipse 导出向导编写的相应 .ini 文件中,如 -Dosgi.nl=

.ini 文件部分示例:

-vmargs
-Xmx1024m
-Xms256m
-XX:NewRatio=3
-Dosgi.nl=en_US
-Dorg.eclipse.ecf.provider.filetransfer.retrieve.connectTimeout=30000
-Dorg.eclipse.ecf.provider.filetransfer.retrieve.closeTimeout=15000

【讨论】:

    猜你喜欢
    • 2019-08-27
    • 2019-08-27
    • 2011-04-05
    • 1970-01-01
    • 2018-11-27
    • 2013-01-10
    • 2020-04-05
    相关资源
    最近更新 更多