2011-11-30 127 views
5

Java I18n的功能很棒。 支持locales作品完美:不支持的Java I18n语言环境

Locale ar = new Locale("ar","SA"); 
System.out.println(ar.getDisplayName(ar)); 

输出:العربية (السعودية)

但对于像Kazakh语言不支持的语言环境,语言名称会显示在同一朗将在Enlish(标准)输出,用Java编写的规格。

Locale locale = new Locale("kk","KZ"); 
System.out.println(kk.getDisplayLanguage(kk)); 

输出:Kazakh (Kazakhstan)

我试图解决这个问题,最后的代码必须像这样的输出:Қазақша (Қазақстан)

有人知道解决方案吗?

任何猜测(或方式与Java SE开发人员联系,或用谁知道算法),我会注意的答案;)

谢谢!

回答

1

假设您在Windows上运行,您需要更改OS区域设置中的区域设置。 请参阅this链接。 (胜利2000年哈萨克出现,但是,赢得7它没有出现在列表中...)。在linux上,您可以使用localedef utility来设置语言环境。

祝你好运!

+0

比从未更好迟到^^ – erko

2

最明显的解决方案是自己提供翻译,即根据语言和国家/地区属性值将语言环境外部化,并将它们放入ListResourceBundle实例中。如果这看起来像很多工作,它应该... 其他值得检查的解决方案是使用ICU
它不会直接为您提供区域设置显示名称,但您可以基于区域设置创建ULocale对象,并且这可能会被翻译。
如果ICU技巧不起作用,您可能会被迫通过CLDR语言列表并自行提供翻译。 BTW。塞尔维亚人有完全相同的问题,我不知道他们是否将它固定为JDK7 ...

相关问题