Java Locale获得Sinhala /斯里兰卡翻译

时间:2013-10-04 18:23:20

标签: java internationalization locale

我有JSF UI应用程序,我想显示已翻译的国家/地区名称。

我正在使用Java Locale获取国家/地区名称。但无法满足我的翻译要求。使用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以外的可用库来执行强大的语言环境特定要求?

2 个答案:

答案 0 :(得分:3)

正如我在评论中已经建议的那样,您应该尝试使用ICU来获取Locales的本机名称。最简单的用法示例:

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

打印:

  

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

我认为答案是正确的。要将其转换为适合UIViewRoot的形式,您只需要调用toLocale()方法:

Locale javaLocale = locale.toLocale();

就是这样。

答案 1 :(得分:0)

怎么样

Locale locale = new Locale("si", "LK")