2013-10-04 102 views
3

我有JSF UI應用程序,我想顯示翻譯後的國家/地區名稱。獲取僧伽羅語/斯里蘭卡語翻譯的Java語言環境

我使用Java語言環境獲取國家/地區名稱。但無法獲得我的轉換要求。 Java 1.6 Locale只提供44個獨特的國家。

Locale[] localeArray = Locale.getAvailableLocales(); 
System.out.println("localeArray---->"+localeArray.length); 

for (Locale locale : localeArray) {  
    counter++; 
    System.out.print("locale-->"+locale+"-------"); 
    System.out.print("locale getISO3Language-->"+locale.getISO3Language()); 
    System.out.println("-----locale.getDisplayCountry(locale)--->"+locale.getDisplayCountry(locale)); 
    System.out.println("-----locale.getDisplayCountry()--->"+locale.getDisplayCountry()); 
    System.out.println("-----locale.getCountry()--->"+locale.getCountry()); 

    System.out.println("----------------------------------------------------"+counter); 
} 

請讓我們知道如何執行我的要求?

Oracle文檔提供了link

除Java之外是否還有其他可用的庫來執行強大的特定於語言環境的要求?

+0

有沒有反饋意見? –

+1

看看[ICU](http://icu-project.org/),但我懷疑你會發現更多。我不確定在[CLDR](http://cldr.unicode.org/)中是否有翻譯,但值得檢查。至少在CLDR中,你可能能夠實現語言切換器反模式(這就是你想要的,是不是?) –

+0

我已經檢查過了。但是沒有工作解決方案或方法或指導方針。有沒有Apache公用設施? –

回答

1

正如我在評論中已經建議的那樣,您應該嘗試使用ICU獲取Locales的本地名稱。最簡單的可能的使用例子:

ULocale locale = ULocale.forLanguageTag("si-LK"); 
System.out.println(locale.getDisplayName(locale)); 

此打印:

සිංහල(ශ්රීලංකාව)

我認爲答案是正確的。要轉換爲適合UIViewRoot形式這一點,你只需要調用toLocale()方法:

Locale javaLocale = locale.toLocale(); 

就是這樣。

+0

非常感謝您的指導。我使用icu4j-3.6.1.jar檢查了它,但沒有ULocale類中的LanguageTag方法。請讓我們知道你使用的步驟,罐子。 –

+1

@Ruchira:當前版本的ICU是52.1,如[下載頁面](http://site.icu-project.org/download)上列出。與其他項目不同,我強烈建議使用[最新版本的ICU](http://site.icu-project.org/download/52#TOC-ICU4J-Download),因爲它包含最新版本的Unicode作爲CLDR。 –

+0

好的,謝謝,我會檢查並接受答案。 –