Существуют ли константы для языковых кодов в 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