В чем разница между созданием локали для en-US и en_US? - PullRequest
33 голосов
/ 08 января 2011

У меня все значения ресурсов в таблице и отформатированы в соответствии с требованием. Мне нужно изменить языки на веб-сайте в зависимости от выбора пользователя в раскрывающемся списке вверху страницы. Если я использую код языка как en_US, то он работает нормально. если я использую en-Us в качестве языкового кода, то он не работает. В чем может быть проблема. Как правильно следовать?

Ответы [ 4 ]

29 голосов
/ 08 января 2011

«en-US» - это языковой тег IETF . Хотя класс Java'a Locale явно основан на языковых тегах IETF, он использует подчеркивания вместо дефисов при отделении кодов языков от кодов стран (а также вариантов), поэтому вызывается toString() для эквивалентного Locale даст вам en_US.

Начиная с Java 7, вы можете использовать Locale.forLanguageTag(String) и toLanguageTag() для преобразования между языковыми тегами и Locale объектами.

При преобразовании строк в Locale объекты рекомендуется нормализовать, разбив компоненты на дефисы и подчеркивания, поместив в нижний регистр первый компонент (код языка) и прописные буквы второго компонента (код страны).

26 голосов
/ 08 января 2011

"en" - это код языка, указанный в ISO 639. в то время как US - код страны, указанный в 3166.
В Java объект Locale распознает язык как languageCode_countryCode (например, en_US), а не как languageCode-countryCode .

6 голосов
/ 31 июля 2014

Или вы можете использовать Locale us = Locale.forLanguageTag("en-US") и us.toLanguageTag(), и это сделает преобразование за вас без необходимости создания собственной реализации, подверженной ошибкам.

3 голосов
/ 16 июня 2016

Начиная с Java8, Инициализация локали должна выполняться с помощью языкового тега "en-US" Locale.forLanguageTag ( "EN-US") ToString (). возвращает вывод: en_US

Где, так как Locale.forLanguageTag ("en_US") не создает необходимую локаль. По умолчанию будет использоваться языковой стандарт системы. Locale.forLanguageTag ("en_US"). ToString () возвращает нуль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...