Существуют ли константы для языковых кодов в java или в java-библиотеке?
Существуют ли какие-либо константы для языковых кодов, таких как "en"
или "de"
в java или в java-библиотеке? (Или использует строки ОК?)
Я знаю, что что-то вроде
Locale.COUNTRY-NAME.getLanguage()
будет работать, но я ищу что-то более упорядоченное, как
Locale.LANGUAGE-NAME
Ответы
Ответ 1
Я боюсь, что для всех языков нет констант.
У вас есть несколько предопределенных локалей, таких как Locale.UK
Locale.US
и т.д. В каждом языковом коде есть код языка, который можно получить с помощью метода getLanguage()
.
Чтобы получить код языка, поддерживаемый базовым JVM, используйте getISOLanguages()
for(String lang : Locale.getISOLanguages()) {
System.out.println(lang);
}
Подробнее: http://download.oracle.com/javase/1.4.2/docs/api/java/util/Locale.html
Ответ 2
2-буквенные коды языков определяются стандартом ISO 639-1. Класс java.util.Locale
не содержит их всех, но только локали, поддерживаемые VM (согласно Locale.getAvailableLocales()
).
Самый простой способ доступа ко всем языковым кодам ISO 639-1 в Java - это полагаться на "Международные компоненты для юникода" (ICU4J) — обширную, широко используемую и активно развитую библиотеку i18n от IBM. Вы можете получить список всех языков из класса ULocale: com.ibm.icu.util.ULocale.getISOLanguages ().
Ответ 3
Yup.. Используйте Locale.COUNTRY-NAME