2014-07-10 48 views
0

在我們的eclipse應用程序中,我們使用該方法爲本地化提供專用的nls包,messages.java和本地化的messages_xx_XX.properties文件。這一般工作非常好:當在德語Windows上運行時,我們得到德語字符串,英語Windows上的英語字符串等。如何在使用org.eclipse.osgi.util.NLS方法時設置不同的語言環境

現在的請求是,用戶可以切換到不同的語言。所以即使他的Windows設置爲德語,他也能夠運行我們的軟件。英文字符串。

這看起來不太難,因爲那裏有幾個文檔,描述了切換Java應用程序的區域設置的各種方法。例如。通過使用命令行開關-Duser.language和-Duser.country。或者通過使用這個stackoverflow帖子中概述的方法:How to set eclipse console locale/language

另一種日食的方法應該是使用-nl開關作爲日食。 「eclipse.exe -nl en」。

Nooow:這些方法都行不通!無論你在例如德國的Windows系統,無論您使用何種方法,您都會得到德語字符串。

在我發現的問題中進行挖掘,發現綁定到各自的messages_xx_XX.properties文件發生在NLS.class的「buildVariants」方法中。在此方法中,調用「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字段,我們也可以嘗試觸發重新加載轉換屬性文件。

+0

這篇文章[Java 7默認語言環境更改](http://blog.ej-technologies.com/2011/12/default-locale-changes-in-java-7.html)有幫助嗎? – DavidPostill

回答

1

由我自己找到了解決辦法:

  1. 相當棘手:它不會在調試模式 Eclipse中Eclipse應用程序工作。您需要導出您的應用程序,然後通過eclipse可執行文件運行它!
  2. 影響NLS方法的區域設置的設置取自eclipse框架屬性「osgi.nl」。
  3. 它是如何工作,我的辦法是,把這個屬性到由Eclipse導出嚮導爲-Dosgi.nl = <代碼編寫相應的.ini文件>

樣品.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 
相關問題