3

根据 javadoc Locale.getDisplayLanguage(Locale inLocale)

返回适合向用户显示的区域设置国家/地区的名称。如果可能,返回的名称将根据 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));
        }
    }
}

我得到以下输出:

日本 秘鲁

日本 巴拿马 波斯尼亚和黑塞哥维那

危地马拉 阿拉伯联合酋长国 挪威 阿尔巴尼亚

伊拉克 也门

葡萄牙 塞浦路斯 卡塔尔 马其顿

瑞士 美国 芬兰

马耳他 斯洛文尼亚 斯洛伐克

土耳其人

沙特阿拉伯

英国 塞尔维亚和黑山

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

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

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

乌拉圭 拉脱维亚

巴西 叙利亚

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

奥地利

荷兰 厄瓜多尔 台湾 约旦

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

匈牙利

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

新加坡

萨尔瓦多 俄罗斯 韩国

阿尔及利亚 越南 黑山

利比亚

中国 白俄罗斯 香港

以色列 保加利亚

马耳他 巴拉圭

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

卢森堡

阿根廷

马来西亚 克罗地亚 新加坡

阿曼

泰国

瑞典 丹麦 洪都拉斯

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

4

1 回答 1

3

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

于 2011-12-21T15:00:54.967 回答