根据Locale.getDisplayLanguage(Locale inLocale)
的javadoc,
返回适合的语言环境国家/地区的名称 显示给用户。如果可能,返回的名称将被本地化 根据inLocale。例如,如果语言环境是fr_FR和 inLocale是en_US,getDisplayCountry()将返回“France”;如果 locale是en_US,inLocale是fr_FR,getDisplayCountry()将返回 “Etats-紫光”。如果返回的名称无法根据本地化 inLocale对。 (比如,我们没有克罗地亚的日本名字),这个 函数依赖于英文名称,最后是ISO代码 作为最后的手段。如果区域设置未指定国家/地区,则为此 function返回空字符串。
因此,当我执行以下代码片段时:
final class TurkishDemo
{
public static void main(String[] args)
{
final Locale l = new Locale("tr");
for(Locale locale: Locale.getAvailableLocales())
{
System.out.println(locale.getDisplayCountry(l));
}
}
}
我得到以下输出:
日本秘鲁
日本巴拿马波斯尼亚和黑塞哥维那
危地马拉阿拉伯联合酋长国挪威阿尔巴尼亚
伊拉克也门
葡萄牙塞浦路斯卡塔尔马其顿
瑞士美国芬兰
马耳他斯洛文尼亚斯洛伐克
Türkiye的
沙特阿拉伯
英国塞尔维亚和黑山
新西兰挪威立陶宛尼加拉瓜
爱尔兰比利时西班牙黎巴嫩
加拿大爱沙尼亚科威特塞尔维亚美国墨西哥苏丹印度尼西亚
乌拉圭拉脱维亚
巴西叙利亚
多米尼加共和国瑞士印度委内瑞拉巴林菲律宾 突尼斯
奥地利
荷兰厄瓜多尔台湾约旦
冰岛哥伦比亚哥斯达黎加智利埃及南非泰国希腊 意大利
匈牙利
爱尔兰乌克兰波兰卢森堡比利时印度西班牙摩洛哥玻利维亚 澳大利亚新加坡
萨尔瓦多俄罗斯韩国
阿尔及利亚越南黑山
利比亚
中国白俄罗斯香港
以色列保加利亚
马耳他巴拉圭
法国捷克共和国瑞士罗马尼亚波多黎各加拿大德国
卢森堡
阿根廷
马来西亚克罗地亚新加坡
阿曼
泰
瑞典丹麦洪都拉斯
您会注意到几乎所有(土耳其除外)都会回到英文显示国家/地区名称。这是预期的,还是我做错了什么?
答案 0 :(得分:3)
我认为你的代码是正确的。我在我的机器上运行代码的行为相同。除土耳其本身外,似乎JDK没有这些国家名称的土耳其语翻译。