簡體   English   中英

在java中獲取OS語言

[英]Getting OS language in java

我在這里遇到了一個問題。

我是法國人,正在使用英文版的Windows XP。 因此,我將區域選項設置為法語,但仍然具有英語UI。

我正在開發一個小型Java SE應用程序,並決定使用資源包將其國際化。

要顯示正確的語言,我使用此函數創建包:

private static ResourceBundle bundle = ResourceBundle
          .getBundle("locale.Strings", Locale.getDefault());

但是Locale.getDefault()函數返回區域設置(意思是:法語),而不是系統UI語言。 因此,我的UI在英語環境中默認為法語。 好吧,那不是我所期待的......

有誰知道恢復系統UI語言的獨立於平台的方式? 提前致謝 !

編輯:修復本地到區域設置,謝謝。

這是Windows中的錯誤配置。 Locale#getDefault()返回系統區域設置,而不是日期/時間格式化區域或位置。

在下面的Windows XP特定屏幕截圖中,您可以將區域選項語言設置為法語或任何您喜歡的。 高級”菜單中的下拉列表實際上設置了系統區域設置,在您的情況下應設置為英語。

在此輸入圖像描述

不可否認,這在Windows XP中得到了很好的解釋,Windows 7做得更好一些:

在此輸入圖像描述

我沒有辦法嘗試(因為我傾向於避免微軟制造的任何東西),但看看這些:

需要Java 7:

Locale uiLocale = Locale.getDefault(Locale.Category.DISPLAY);

無論如何,這應該用於獲取翻譯(從Java 7開始)。

如果這不是很有幫助,我會嘗試:

System.out.println(System.getenv("LC_MESSAGES"));       
System.out.println(System.getenv("LANG"));
System.out.println(System.getenv("LANGUAGE"));

但是,在這種情況下,我希望與默認的Locale有一些相似之處......

由於你的建議,我嘗試了一些事情,這是我的觀察:

  • 如果您使用的是Java 6而不是Java 7,則可以使用它。
  • 如果您使用的是Java 7,則應該按照BalusC的說法進行操作:更改“區域和語言設置”中的設置。 之后,Locale.getDefault()將默認返回顯示語言,如果您將其設置為英語,則表示英語。 要確保它,您可以通過調用Locale.getDefault(Locale.Category.DISPLAY)來創建語言環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM