根据 Locale.getDisplayLanguage(Locale inLocale) 的javadoc,

返回适合于以下语言环境的国家/地区的名称:
向用户显示。如果可能,返回的名称将被本地化
根据inLocale。例如,如果语言环境为fr_FR且
inLocale为en_US,getDisplayCountry()将返回“France”;如果
语言环境为en_US,inLocale为fr_FR,getDisplayCountry()将返回
“Etats-Unis”。如果返回的名称无法根据
inLocale。 (例如,我们没有克罗地亚的日语名称),这
功能取决于英文名称,最后取决于ISO代码
作为最后的度假价值。如果语言环境未指定国家/地区,则此
函数返回空字符串。

因此,当我执行以下代码片段时:

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

沙特阿拉伯

英国塞尔维亚和黑山

新西兰挪威立陶宛尼加拉瓜

爱尔兰比利时西班牙黎巴嫩

加拿大爱沙尼亚科威特塞尔维亚美国墨西哥苏丹印度尼西亚

乌拉圭拉脱维亚

巴西叙利亚

多米尼加共和国瑞士印度委内瑞拉巴林菲律宾
突尼斯

奥地利

荷兰厄瓜多尔台湾约旦

冰岛哥伦比亚哥斯达黎加智利埃及南非泰国泰国
意大利

匈牙利

爱尔兰乌克兰波兰卢森堡比利时印度印度西班牙摩洛哥玻利维亚
澳大利亚

新加坡

萨尔瓦多俄罗斯韩国

Algolia 越南黑山

利比亚

中国白俄罗斯香港

以色列保加利亚

马耳他巴拉圭

法国捷克共和国瑞士罗马尼亚波多黎各加拿大德国

卢森堡

阿根廷

马来西亚克罗地亚新加坡

阿曼

泰国

瑞典丹麦洪都拉斯

您会注意到,几乎所有国家(土耳其除外)都使用英文显示的国家名称。这是意料之中的,还是我做错了什么?

最佳答案

我认为您的代码是正确的。在我的机器上运行代码时,我得到了相同的行为。除了土耳其本身,JDK似乎没有这些国家/地区名称的土耳其语翻译。

关于java - 当“inLocale”设置为土耳其语(JDK 1.6.0_29)时,可用的语言环境显示国家/地区?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8591450/

10-10 10:08