在我們的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字段,我們也可以嘗試觸發重新加載轉換屬性文件。
這篇文章[Java 7默認語言環境更改](http://blog.ej-technologies.com/2011/12/default-locale-changes-in-java-7.html)有幫助嗎? – DavidPostill