簡體   English   中英

如何獲取systeminfo語言環境 - Locale.getDefault()

[英]How to get systeminfo locale - Locale.getDefault()

目前我的系統區域設置是en-UK ,它曾經是en-US (我已重新啟動計算機以使此更改生效)

當我打印Locale.getDefault().getCountry().toString()我仍然得到了美國。

在API中它聲明:

getDefault()

獲取此Java虛擬機實例的缺省語言環境的當前值。

也許JVM語言環境與系統區域設置無關? 如果是這樣,我如何在Windows上獲得系統區域設置?

編輯:

  • 在研究了關於此問題的其他問題之后,我發現說我正在處理Java 6很有用。
  • 我剛剛發現在我的操作系統(Windows 7)上,系統區域設置更改未反映在Java中,但反映了控制面板>區域和語言>格式更改。
  • 我忽略了一些東西,在生產代碼中設置了osgi.nl配置屬性,改變了Locale.getDefault將返回的內容

您的JVM區域設置和系統區域設置確實可能不同。 首次加載JVM時,除非您在命令行中另行指定,否則它將其語言環境指定為與系統的語言環境相同(並非所有實現都允許您這樣做)。 您可以從Locale.getDefault()查看此JVM區域設置的值。

如果你想改變它你可以: Locale.setDefault("<preferred_locale>") 在這里閱讀更多相關信息

系統區域設置取決於您使用的操作系統。 我對Windows知之甚少,但是,您可以看到System.getEnv()的值是什么。 它返回所有環境屬性的Map<String, String> ,您可以查找LANG或GDM_LANG等內容。

國家/地區變體取自Windows區域設置的擴展對話框中的“非Unicode”設置。

Sun JDK 6u27 +和JDK 7, BugId 7073906中存在錯誤

Locale.getDefault()返回的Locale是en_US,當它是en_GB時。

我想這就是咬你的地方:)

我在生產中實現了一個參數WAS被設置,改變了Locale.getDefault()的返回值。 這很難檢查/證明。

我的解決方案是user.country和user.language沒有被更改並反映了實際的Locale。

Locale locale = new Locale(System.getProperty("user.language"),System.getProperty("user.country"));
Locale.setDefault(locale);
//this will do the trick for me

非常感謝所有回答和評論的人。

暫無
暫無

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

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