2013-10-04 103 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

好的,谢谢,我会检查并接受答案。 –