A Locale
может включать код страны, но они не предназначены для идентификации стран.
A Locale
предназначен для представления комбинации правил для отображения переводов/форматирования и т. Д.
Местные жители обозначаются комбинацией языка, страны и варианта.
Итак:
en
будет английский
en_US
бы вариант английского языка говорят в Америке
en_US_WIN
может представлять американский английский для версии программного обеспечения, работающего на Windows (например, если вы есть текст, который должен быть другим для пользователей Windows).
Языковые и страновые части основаны на стандартах ИСО. Но Locale на самом деле не ограничивает то, что вы делаете с вариантом.
Вы не должны думать о том, что локали имеют сопоставление «один к одному» со странами (или с языками).
например.
fr_FR
= Разнообразие французского языка во Франции.
fr_CH
= Разнообразие французского языка в Швейцарии.
de_CH
= Разнообразие немецкого языка в Швейцарии.
Многие системы, использующие Locales, будут следовать практике возврата к более общим языкам по мере необходимости. например ResourceBundle
, который можно использовать для поиска соответствующих текстовых переводов на основе ключа сообщения. Если вы сказали ему найти сообщение в Locale en_US_WIN
и он его не нашел, он затем попытался бы с Locale en_US
, а затем en
, а затем снова отскакивал от «root» Locale. Это означает, что если бы переводы на американском и британском языках использовали один и тот же текст для чего-то, тогда их перевод нужно было бы записать только один раз. Это также означает, что если код не знает о языке, он может вернуться к языку по умолчанию (сохраненному в файлах для корневого языка).
Если вы заинтересованы в получении списка стран или языков, для этого вам необходимо обратиться к Locale
.
Locale.getISOCountries(); // Returns list of ISO country codes
Locale.getISOLanguages(); // Returns list of ISO language codes
Есть также методы для получения читаемых имен человеческих языков:
Locale.ENGLISH.getDisplayLanguage(Locale.GERMAN); //Englisch
Locale.GERMAN.getDisplayLanguage(Locale.ENGLISH); //German
Locale.ENGLISH.getDisplayLanguage(Locale.English); //English
Locale.GERMAN.getDisplayLanguage(Locale.GERMAN); //Deutsch
И человек читаемых названия стран:
Locale.US.getDisplayCountry(Locale.ENGLISH); //United States
Locale.GERMANY.getDisplayCountry(Locale.ENGLISH); //Germany
Locale.US.getDisplayCountry(Locale.GERMAN); //Vereinigte Staaten von Amerika
Locale.GERMANY.getDisplayCountry(Locale.GERMAN); //Deutschland
локаль = язык + регион. – Hacketo
Язык может влиять на переводы, валюту, отображение номера и формат времени с часовым поясом. Помните - locale! = Язык – Antoniossss
Hacketo и Antoniossss, большое спасибо за ваш вклад! Согласно Oracle на http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html: Объект Locale представляет собой определенный географический, политический или культурный регион. Означает ли это, что мое понимание выше верно? – curious1