Существуют ли константы для языковых кодов в Java или в библиотеке Java? - PullRequest
14 голосов
/ 29 августа 2011

Есть ли какие-либо константы для языковых кодов, таких как "en" или "de" в Java или в библиотеке Java?(Или с использованием строк все в порядке?)

Я знаю, что что-то вроде

Locale.COUNTRY-NAME.getLanguage()

будет работать, но я ищу что-то более упорядоченное, например

Locale.LANGUAGE-NAME

Ответы [ 3 ]

5 голосов
/ 13 ноября 2013

Двухбуквенные языковые коды определены стандартом ISO 639-1. Класс java.util.Locale не содержит их всех, а содержит только локали, поддерживаемые виртуальной машиной (согласно Locale.getAvailableLocales()).

Самый простой способ получить доступ ко всем кодам языков ISO 639-1 в Java - это использовать проект International Components for Unicode (ICU4J) & mdash; обширная, широко используемая и активно развивающаяся библиотека i18n от IBM. Вы можете получить список всех языков из класса ULocale: com.ibm.icu.util.ULocale.getISOLanguages ​​() .

3 голосов
/ 29 августа 2011

Боюсь, что нет констант для всех языков.У вас есть несколько предопределенных локалей, таких как 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

0 голосов
/ 29 августа 2011

Да .. Использовать Locale.COUNTRY-NAME

...