Доступная страна отображения локали, когда для inLocale установлено значение Турецкий (JDK 1.6.0_29)?

Согласно javadoc для Locale.getDisplayLanguage(Locale inLocale),

Возвращает название страны локали, подходящее для отображения пользователю. Если возможно, возвращаемое имя будет локализовано в соответствии с inLocale. Например, если локаль - fr_FR, а inLocale - en_US, getDisplayCountry () вернет «Франция»; если локаль 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

Саудовская Аравия

Соединенное Королевство Сербия и Черногория

Новая Зеландия Норвегия Литва Никарагуа

Ирландия Бельгия Испания Ливан

Канада Эстония Кувейт Сербия США Мексика Судан Индонезия

Уругвай Латвия

Бразилия Сирия

Доминиканская Республика Швейцария Индия Венесуэла Бахрейн Филиппины Тунис

Австрия

Нидерланды Эквадор Тайвань Иордания

Исландия Колумбия Коста-Рика Чили Египет Южная Африка Таиланд Греция Италия

Венгрия

Ирландия Украина Польша Люксембург Бельгия Индия Испания Марокко Боливия Австралия

Сингапур

Сальвадор Россия Южная Корея

Алжир Вьетнам Черногория

Ливия

Китай Беларусь Гонконг

Израиль Болгария

Мальта Парагвай

Франция Чехия Швейцария Румыния Пуэрто-Рико Канада Германия

Люксембург

Аргентина

Малайзия Хорватия Сингапур

Оман

Таиланд

Швеция Дания Гондурас

Вы заметите, что почти все (кроме Турции) используют отображаемое название страны на английском языке. Этого следовало ожидать, или я что-то делаю не так?


person mre    schedule 21.12.2011    source источник


Ответы (1)


Я считаю, что ваш код правильный. У меня такое же поведение при запуске кода на моей машине. Похоже, что у JDK нет турецких переводов названий этих стран, кроме самой Турции.

person Alex Cheng    schedule 21.12.2011
comment
Только что попробовал IBM JDK 1.7 (единственный выпуск 1.7, который у меня есть), он возвращает турецкие имена для большинства стран ... - person home; 21.12.2011
comment
@home, jdk 1.7.0_01 возвращает те же значения 1.6.0_29 - person mre; 21.12.2011
comment
Интересно - похоже, это функция, которую мы просто не должны использовать :-) - person home; 21.12.2011
comment
Я тестировал на Oracle JDK 1.7. У IBM JDK больше переводов, чем у Oracle JDK. Поэтому я думаю, что эта функция зависит от производителя. - person Alex Cheng; 22.12.2011