2015-07-01 111 views
6

我有此需求,我需要將等效的國家代碼轉換爲德語國家/地區名稱。我正在使用語言環境生成器來處理我的代碼。使用語言環境將英語國家/地區名稱更改爲德語

這裏是我的代碼:

我做的第一個是這樣的:

Locale locale = new Locale("GERMANY", "AT"); 

生成的輸出:German (Austria)

第二個:

Locale aLocale = new Locale.Builder().setLanguage("de").setRegion("AT").build(); 

生成的輸出: German (Austria)

我需要的是將奧地利的countryCode "AT"轉換爲德語,它應該生成Österreich

回答

2

方法的LocalegetDisplayCountry()可以採取Locale論據的語言,試圖以顯示它。例如:我

Österreich 

如果你想

Locale locale = new Locale("de", "AT"); 
System.out.println(locale.getDisplayCountry(locale)); 

打印整個語言環境名稱,只需使用帶參數getDisplayName()而不是getDisplayCountry()

這不能保證適用於每種語言環境組合。根據文檔:

如果返回的名稱不能根據[提供Locale參數(比方說,我們沒有對克羅地亞的日本名稱)是局部的,則該功能將依賴英文名,最後以ISO代碼作爲最後的手段價值。

另請注意,德語的語言代碼是"de",而不是"GERMANY"

+0

嗨@丹,它的工作。非常感謝 :) – pinkpanther

2

Java Locale s不是翻譯服務。它們用於描述本地化組件,例如,您可能有一個Map<Locale, String> austria,其中可能包含從en"Austria"de_AT"Österreich"的映射。更有可能的是,您將使用資源包將Locale s映射到您可以在整個應用程序中使用的大量翻譯。這裏是ResourceBundle tutorial

如果要將文本翻譯爲其他語言,則需要使用某種翻譯服務,如Google's Translate API

相關問題