Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不支持的区域设置的Java I18n_Java_Internationalization - Fatal编程技术网

不支持的区域设置的Java I18n

不支持的区域设置的Java I18n,java,internationalization,Java,Internationalization,javai18n的功能是惊人的。 支持作品完美: Locale ar = new Locale("ar","SA"); System.out.println(ar.getDisplayName(ar)); 输出: 但对于不受支持的语言环境,如Kazakhlanguage,语言名称将以相同的语言显示,并将以Enlish(标准)输出,如Java规范中所述 Locale locale = new Locale("kk","KZ"); System.out.println(kk.getDisplayL

javai18n的功能是惊人的。 支持作品完美:

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

但对于不受支持的语言环境,如
Kazakh
language,语言名称将以相同的语言显示,并将以Enlish(标准)输出,如Java规范中所述

Locale locale = new Locale("kk","KZ");
System.out.println(kk.getDisplayLanguage(kk));
输出:
哈萨克语(哈萨克斯坦)

我试图解决这个问题,最后一个代码必须这样输出:

有人知道答案吗

任何猜测(或与JavaSE开发人员联系的方式,或与了解算法的人联系的方式),我都会记下来作为答案;)


谢谢大家!

假设您在Windows上运行,则需要在操作系统区域设置中更改区域设置。 请参阅链接。(在win 2000上出现哈萨克语,但在win 7上它不出现在列表中…)。在linux上,可以使用设置语言环境


祝你好运

最明显的解决方案是由您自己提供翻译,即根据语言和国家属性的值将区域设置外部化,并将其放入ListResourceBundle实例中。如果这看起来是一个很大的工作,它应该。。。 其他值得检查的解决方案正在使用。
它不会直接为您提供区域设置显示名称,但您可以基于区域设置创建ULocale对象,这可能只是翻译而已。

如果ICU的诀窍不起作用,你可能会被迫浏览语言列表,自己提供翻译。顺便说一句,塞尔维亚人也有同样的问题,我不确定他们是否修复了JDK7…

因为你的帖子很老了,我认为既然Java JDK 9,你的代码应该可以正常工作

使用Java 11测试的示例:

Locale country = new Locale.Builder().setRegion("KZ").build();
Locale lang = new Locale.Builder().setLanguage("kk").build();
System.out.println(country.getDisplayCountry(lang));

请注意,在Java8中,这个问题仍然存在(没有翻译)。

迟做总比不做好^^