Более

Список языковых кодов по странам


Кто-нибудь знает список стран с соответствующими кодами официальных языков? Я еще ничего не нашел в Google.

Я ищу что-то вроде этого:

Название страны / код Код языка […] Болгария (BG) bg Бельгия (BE) nl, fr […]

Некоторые дополнительные пояснения:

Как нет корреляции между страной и ее официальным языком (языками)?

В моем приложении это актуально, потому что я хочу перенаправить того, кто обращается к нему из США, на $ {path} / us /en/, поэтому мне нужно получить тег официального языка. Я получаю код страны из веб-службы геолокации, и мне нужен соответствующий (официальный) языковой код.

Например, у меня на компьютере все установлено на английском языке, но я живу в Румынии. Когда я получаю к нему доступ, я не хочу, чтобы меня перенаправляли на версию для Великобритании, ro / en не существует, поэтому я хочу ro / ro.

Я хотел проверить, существует ли уже агрегированный список, чтобы мне не приходилось делать это вручную. Если нет, построю :).


В файле countryInfo с http://geonames.org (http://download.geonames.org/export/dump/countryInfo.txt) есть имена, коды стран, языки и много другой информации. Это список, разделенный табуляцией, поэтому awk или любой текстовый редактор позволят вам выбрать только те столбцы, которые вам нужны.


Информация, которую вы ищете, на самом деле представляет собой две отдельные части информации. Я не уверен, что между ними есть прямая связь.

Коды стран доступны по адресу: www.iso.org/iso/english_country_names_and_code_elements

Коды языков доступны по адресу: www.loc.gov/standards/iso639-2/php/code_list.php.

Смешивание кусочков информации - это то, что делается в «регионах». Кажется, что это не совсем стандартизировано. Многие компании, похоже, делают это самостоятельно и даже предоставляют утилиты для поддержки этого в таких вещах, как Java (см. Http://java.sun.com/developer/technicalArticles/J2SE/locale/).

На этом сайте есть дополнительная информация о языковых тегах: www.langtag.net/.

Кстати, связь кодов страны с кодом языка обычно не так значима в пользовательском приложении. В стране много пользователей, которые используют «неродные» языки. (То есть: кто-то в США, использующий китайский язык, или наоборот.)


Поиск "Переполнение стека" для "списка локалей" привел к следующему:

https://stackoverflow.com/questions/3191664/list-of-all-locales-and-their-short-codes

Добавьте один из этих списков в свой любимый язык программирования, и тогда вы сможете составить таблицу, подобную той, которая вам нужна.


Коды расположены в алфавитном порядке по коду альфа-3 / ISO 639-2.

http://www.loc.gov/standards/iso639-2/php/code_list.php

через google> wiki> внешний сайт


Список национальных систем координат

В список национальных систем координат (CRS) перечисляет географические прогнозы, официально рекомендованные для существующих стран. Учитывая, что каждая географическая проекция страны и ее сферическая реальность на плоскую поверхность порождает определенные и хорошо известные расстояния, формы, деформации площадей, каждая страна нуждается в разных условиях, чтобы уменьшить эти искажения. Кроме того, каждой стране, чтобы представить свое географическое пространство, необходимо выбрать подходящую географическую проекцию с низким уровнем искажений. Эти национальные прогнозы или национальные системы координат официально объявляются соответствующими национальными агентствами. Приведенный ниже список представляет собой набор доступных официальных национальных систем координат.

Для Европы рекомендации доступны для каждой страны (Annoni и др. 2001: 43-44), а также для Европейского Союза из 15, 27 и более крупной географической Европы (Annoni и др. 2001: 16). Самым важным проектом по сбору географических прогнозов является проект EPSG Geodetic Parameter Dataset, включающий около 4000 объектов и соответствующих подходящих прогнозов, с известными прогнозами для всех основных стран. Эти прогнозы и кадры общедоступны в Интернете на различных сайтах. [1]


Географические данные и объекты

() & # 8212 использовать лингвистику произвольной формы для указания географических объектов, свойств и т. Д.

Представление географических конструкций & # 187

Entity & mdash географический объект указанного типа (например, )

CommonName & mdash общее печатное название географического объекта

GeoVariant & mdash указывает варианты объектов (например, США с Аляской или без нее)

GeoGroup & mdash обрабатывает несколько геообъектов как одну группу для целей вычислений.

Свойства географического местоположения

GeoPosition & mdash найти географическое положение данного географического объекта

GeoNearest & mdash найти ближайший объект заданного типа к местоположению

GeoIdentify & mdash определяет, в какой стране, штате и т. Д. Находится данное местоположение.

GeoWithinQ & mdash определяет, находится ли данное местоположение в пределах указанного региона.

GeoEntities & mdash дает список географических объектов определенного типа в регионе.

GeoDistance & mdash найти расстояние между географическими объектами или местоположениями

ВикипедияПоиск и поиск записей в Википедии рядом с заданным местом

Время и свойства дневного света

LocalTime, LocalTimeZone и mdash находят местное время, часовой пояс в заданном месте

Картографирование и т. Д. & # 187

GeoListPlot & mdash наносит на карту местоположения и пути

GeoRegionValuePlot & mdash создать географическую тепловую карту

GeoGraphics и mdash - персонализированные карты мира в любом масштабе

GeoStyling & mdash доступ к различным стилям карты (& quotOutlineMap & quot, & quotStreetMap & quot, & quotReliefMap & quot,.)

Geom MagneticModelData & mdash текущие и исторические данные о магнитном поле

GeogravityModelData & mdash гравитационное поле Земли

Объекты и данные для политической географии

Страна и страны и территории, сотни объектов недвижимости

HistoricalCountry & mdash 2000+ известных исторических стран

Административное деление и штаты, округа, провинции и т. Д. По всему миру

Города и города и названные населенные пункты мира

CountryData, CityData и специализированный доступ к данным о странах, городах

Объекты и данные для физической географии & # 187

Географический регион и континенты и другие крупные регионы Земли

Океан и океаны, моря и другие крупные морские водоемы

Горы и известные горы, холмы и другие возвышенности по всему миру

Данные о географических достопримечательностях

Аэропорт и мдаш 10000+ аэропортов, взлетно-посадочных полос и вертолетных площадок по всему миру

Строительство & mdash известных зданий, небоскребов, башен и других построек.

Университеты и высшие учебные заведения

Связанные данные & # 187

ВикипедияДанные и полная информация из Википедии обо всех географических объектах и ​​темах.

Импорт геопространственных данных & # 187

Импорт и импорт данных с сохранением структуры символов, аннотаций и т. Д.


Где изучающие английский язык?

Приведенный ниже анализ группирует школьные округа и школы по четырем категориям в зависимости от процента учащихся, принадлежащих к английскому языку: высокий (20 процентов и более были английскими языками), средний (от 5 до 20 процентов), низкий (по крайней мере, один ученик английского языка, но менее 5 процентов), и никаких EL. Анализ показывает, что изучающие английский язык не были равномерно распределены по стране, а скорее сгруппированы в относительно небольшом проценте районов и школ.

Учащиеся, изучающие английский язык, были в значительной степени сконцентрированы в районах и школах вместе со своими сверстниками.

Эти графики подчеркивают тот факт, что изучающие английский язык не были равномерно распределены по всем округам. В 2014-2015 годах почти половина всех EL были зачислены в относительно небольшое количество округов (7 процентов) с высокой долей EL, в то время как в 75 процентов округов была зачислена либо небольшая доля EL, либо вообще не было EL. Кластеризация EL в этих округах, по-видимому, объясняется не только размером округов, поскольку в этих же округах обучается только 15 процентов от общей численности учащихся.

Как и в случае с данными округа, мы видим, что ученики EL не были равномерно распределены по всем школам. Более 60 процентов школ посещают либо небольшую долю EL, либо вообще не посещают EL. В 2014-2015 годах только 15 процентов школ зачисляли высокую долю английских школьников. Однако 61 процент всех изучающих английский язык в стране учился в этих 15 процентах школ. В этих же школах обучается только 16 процентов от общего числа учащихся, что указывает на высокую концентрацию изучающих английский язык в этих школах.


Интернационализация: понимание локали на платформе Java

Язык и географическая среда - два важных фактора, влияющих на нашу культуру. Они создают систему, в которой мы интерпретируем других людей и события в нашей жизни. Они также влияют на правильную форму представления себя и своих мыслей другим, даже определяют ее. Чтобы эффективно общаться с другим человеком, мы должны учитывать и использовать культуру, язык и среду этого человека.

Точно так же программная система должна уважать язык и географический регион своих пользователей, чтобы быть эффективной. Язык и регион образуют локаль, которая представляет собой целевую настройку и контекст для локализованного программного обеспечения. Платформа Java использует объекты java.util.Locale для представления локалей. В этой статье описывается объект Locale и его значение для программ, написанных для платформы Java.

Эта статья разделена на следующие разделы:

СОДЕРЖАНИЕ

Определение

Локали определяют конкретный язык и географический регион. Объекты, чувствительные к языку, используют объекты java.util.Locale для настройки того, как они представляют и форматируют данные для пользователя. Локали влияют на язык пользовательского интерфейса, отображение регистра, сопоставление (сортировку), форматы даты и времени, а также числовые и денежные форматы. Локали имеют решающее значение для многих операций с данными, конфиденциальными с культурной и лингвистической точек зрения.

Java.util.Locale - это легкий объект, который содержит только несколько важных членов:

Когда вы пишете или говорите о локали, вы можете использовать текстовое сокращение для удобного представления. Эта нотация разделяет каждый компонент локали символом подчеркивания:

& ltlanguage code & gt [_ & ltcountry code & gt [_ & ltvariant code & gt]]

Эти три элемента предоставляют достаточно информации другим объектам, зависящим от локали, чтобы они могли изменять свое поведение для определенных языковых или культурных целей. Например, объект java.text.NumberFormat, созданный для немецкоязычной швейцарской локали, будет форматировать числа иначе, чем для немецкоязычной австрийской локали. См. Таблицу 1.

Таблица 1. Форматированный вывод зависит от локали

Locale Отформатированные числа
Немецкий (Германия) 123.456,789
Немецкий (Швейцария) 123'456.789
Английский Соединенные Штаты) 123,456.789

Поскольку объекты Locale являются просто идентификаторами, классы, зависящие от языкового стандарта, такие как java.text.NumberFormat или java.text.DateFormat, выполняют всю работу по предоставлению локализованных форматов чисел или дат. Например, класс java.text.DateFormat использует объект Locale во время создания экземпляра, чтобы решить, как правильно форматировать даты.

В следующих разделах описывается каждый компонент языкового стандарта.

Коды языков

Коды языков определены ISO 639, международным стандартом, который присваивает двух- и трехбуквенные коды большинству языков мира. Locale использует двухбуквенные коды для определения целевого языка. В таблице 2 перечислены некоторые из этих языковых кодов.

Таблица 2. Примеры языковых кодов в стандарте ISO 639

Язык Код
арабский ар
Немецкий де
английский en
испанский язык es
Японский я
иврит он

Язык - важный компонент локали, поскольку он описывает язык, который использует определенная группа клиентов. Ваши приложения будут использовать эту информацию для предоставления пользовательского интерфейса, соответствующего языку вашего клиента.

Конечно, язык не рисует всей картины региона. Например, даже если вы можете использовать de в качестве языкового кода локали, только de ничего не говорит вам о том, где говорят по-немецки. В некоторых странах немецкий язык является официальным первым или даже вторым языком. Одним из отличий немецкого языка от страны к стране является порядок сортировки. По этой и другим причинам языка не всегда достаточно для точного определения локали.

Коды стран (регионов)

Коды стран определены ISO 3166, другим международным стандартом. Он определяет двух- и трехбуквенные сокращения для каждой страны или крупного региона мира. В отличие от кодов языков, коды стран вводятся в верхнем регистре. В таблице 3 показаны некоторые из определенных кодов. Locale использует двухбуквенные коды вместо трехбуквенных кодов, которые также определяет этот стандарт.

Таблица 3. Некоторые коды стран, определенные в стандарте ISO 3166

Страна Код
Соединенные Штаты нас
Канада CA
Франция FR
Япония JP
Германия DE

Коды стран являются важным компонентом локали, поскольку объекты java.text.Format для дат, времени, чисел и валюты особенно чувствительны к этому элементу. Коды стран добавляют точности языковому компоненту локали. Например, французский язык используется и во Франции, и в Канаде. Однако точное употребление и идиоматические выражения различаются в двух странах. Эти различия могут быть зафиксированы с помощью разных обозначений локали, в которых отличается только код страны. Например, код fr_CA (франкоязычная Канада) отличается от кода fr_FR (франкоговорящая Франция).

Код варианта

Операционная система (ОС), браузеры и другие поставщики программного обеспечения могут использовать код для предоставления дополнительных функций или настроек, которые невозможны только с указанием языка и страны. Например, компании-разработчику программного обеспечения может потребоваться указать языковой стандарт для конкретной операционной системы, поэтому ее разработчики могут создать языковой стандарт es_ES_MAC или es_ES_WIN для платформ Macintosh или Windows для клиентов в Испании.

Одним из исторических примеров самой платформы Java является использование варианта евро для европейских стран, в которых используется валюта евро. В переходный период для этих стран этот вариант использовался в платформе Java 2 Standard Edition (J2SE) версии 1.3. Например, хотя локаль de_DE (немецкоязычная Германия) существовала, в среду Java была добавлена ​​de_DE_EURO (немецкоязычная немецкая локаль с вариантом евро). Поскольку валюта евро теперь является стандартом для затронутых стран, эти варианты были удалены в J2SE 1.4. Для большинства проектов приложений, вероятно, не потребуются коды вариантов.

Строительство

Класс Locale имеет несколько конструкторов:

  • Локаль (язык строк)
  • Локаль (язык строки, страна строки)
  • Локаль (язык строки, страна строки, вариант строки)

Ниже показано, как можно использовать каждый конструктор:

Используя двухбуквенный код ISO 639, en обозначает английский язык. Коды ISO 3166 CA и US представляют Канаду и США соответственно: Последняя строка кода выше показывает, как создать языковой стандарт с дополнительным вариантом: локалью en_US_SiliconValley. Этот языковой стандарт более конкретен, чем первый экземпляр. Этот регион не только является англоязычным в США, но также связан с дополнительным вариантом SiliconValley. Поскольку одна из его целей - предоставить разработчикам возможность определять собственные языковые стандарты, вариант может быть любым, что вам нужно.

Хотя компилятор и среда выполнения не будут жаловаться, если вы создадите свой собственный идентификатор языка и страны или региона, вы должны использовать только коды, определенные стандартами ISO. Ограничивая себя определениями ISO, вы обеспечите совместимость с другими приложениями и стандартами кодирования. Что еще более важно, библиотеки классов, зависящие от локали, используют только коды ISO. Например, класс java.text.NumberFormat поймет, как вести себя для локали de_DE (немецкий язык, Германия), но не поймет, что делать с фиктивной локалью foo_biz. Если вы используете идентификаторы, отличные от ISO, вам придется написать код, зависящий от языкового стандарта, для их поддержки.

Предварительно сконструированные локации

Класс Locale имеет множество статических полей, которые представляют созданные объекты Locale. Например, Locale.FRANCE - это предварительно созданный статический объект Locale, который представляет франкоговорящую Францию. Вы можете использовать Locale.FRANCE везде, где вы можете использовать новый Locale ("fr", "FR"). В таблице 4 показаны некоторые из предварительно созданных доступных объектов Locale.

Таблица 4. Некоторые из предварительно созданных объектов локали

Название локали Locale
Locale.CHINA zh_CN
Locale.КИТАЙСКИЙ ж
Locale.SIMPLIFIED_CHINESE zh_CN
Locale.TRADITIONAL_CHINESE zh_TW
Locale.PRC zh_CN
Locale.TAIWAN zh_TW
Locale.ENGLISH en
Locale.UK en_GB
Locale.US en_US
Locale.FRANCE а как
Locale.FRENCH fr

Предварительно сконструированные локали существуют для удобства. Однако список констант статических классов невелик и неполон. Представлены не все важные регионы. Поддержка класса, чувствительного к языку, не определяется тем, существует ли языковой стандарт как константа класса Locale. Например, не существует констант класса South American Locale, но они полностью поддерживаются несколькими зависимыми от языкового стандарта классами, включая DateFormat и NumberFormat.

Поскольку существует так мало готовых локалей, вам, вероятно, следует вообще избегать этих статических объектов. Я описал их здесь, потому что они существуют и потому что вы можете увидеть их в чужом коде. Хотя эти ярлыки удобны, ваш код будет более согласованным без них.

Определение поддерживаемых языков

Какие языковые стандарты поддерживает платформа Java? Вы можете создать любую локаль, какую захотите. Однако ваша среда выполнения может не полностью поддерживать создаваемый вами объект Locale.

Если вы хотите знать, какие объекты Locale вы можете создать, ответ прост: вы можете создать любую локаль, которую хотите. Конструкторы не будут жаловаться на аргументы, отличные от ISO. Однако более полезная формулировка вопроса заключается в следующем: для каких локалей библиотеки классов предоставляют более обширную информацию? Для каких языков библиотеки могут предоставлять сведения о сопоставлении, времени, дате, числе и валюте? Кроме того, вы можете спросить, какие сценарии или системы написания поддерживает ваша среда выполнения.

В следующих разделах описывается, как определить поддерживаемые языковые стандарты в библиотеках времени выполнения. Кроме того, они описывают поддерживаемые сценарии, которые могут отображаться текстовыми компонентами. Наконец, они перечисляют локализации, доступные для библиотек времени выполнения и самого комплекта разработки программного обеспечения (SDK).

Включенные языковые стандарты в пакетах java.util и java.text

Среда выполнения не требует, чтобы все языковые стандарты поддерживались одинаково всеми классами, зависящими от языкового стандарта. Каждый класс, зависящий от языкового стандарта, реализует свою собственную поддержку набора языковых стандартов, и этот набор может отличаться от класса к классу. Например, класс числового формата может поддерживать другой набор локалей, чем класс формата даты.

Кроме того, не требуется, чтобы все реализации среды выполнения поддерживали один и тот же набор локалей. Но все реализации должны поддерживать минимальный их список. Этот список довольно короткий: английский (США). К счастью, среда выполнения, которую предоставляет Sun, намного обширнее. Хотя это формально не требуется, реализация Sun во время выполнения поддерживает один и тот же набор локалей в каждом из своих классов форматов данных, зависящих от локали. Это обеспечивает согласованный набор поддержки для разных классов. Руководство по поддерживаемым языкам платформы J2SE 5.0 содержит полный список всех поддерживаемых локалей. В таблице 5 показаны некоторые из поддерживаемых локалей.

Таблица 5. Некоторые из поддерживаемых локалей в пакетах java.util и java.text

Язык Страна Идентификатор языкового стандарта
арабский Саудовская Аравия ar_SA
Упрощенный китайский) Китай zh_CN
Китайский традиционный) Тайвань zh_TW
Голландский Нидерланды nl_NL
английский Австралия en_AU
английский Канада en_CA
английский объединенное Королевство en_GB
английский Соединенные Штаты en_US
французский язык Канада fr_CA
французский язык Франция а как
Немецкий Германия de_DE
иврит Израиль he_IL
хинди Индия привет_IN
Итальянский Италия it_IT
Японский Япония ja_JP
Корейский Южная Корея ko_KR
португальский Бразилия pt_BR
испанский язык Испания es_ES
Шведский Швеция sv_SE
Тайский (западные цифры) Таиланд th_TH
Тайский (тайские цифры) Таиланд th_TH_TH

Чтобы узнать, какие языковые стандарты поддерживает ваша среда выполнения Java (JRE), вы должны спросить каждый класс, зависящий от языкового стандарта. Каждый класс, поддерживающий несколько локалей, будет реализовывать метод getAvailableLocales (). Например,

Locale [] localeList = NumberFormat.getAvailableLocales ()

Метод getAvailableLocales () реализован во многих классах пакетов java.text и java.util. Например, NumberFormat, DateFormat, Calendar и BreakIterator предоставляют его.

Сам класс Locale локализован для нескольких языков. В приведенном ниже примере экземпляр немецкой локали предоставляет информацию о себе на английском (по умолчанию на хосте автора), немецком и французском языках:

Результат будет выглядеть так:

Включенная поддержка скриптов

Текстовые компоненты обычно не поддерживают отдельные языковые стандарты. Вместо этого текстовые виджеты поддерживают набор сценариев, которые часто выходят за рамки языковых стандартов. Хотя невозможно получить список поддерживаемых сценариев из самих различных текстовых компонентов, этот список опубликован как часть руководства по поддерживаемым языкам платформы J2SE 5.0.

Как правило, одноранговые компоненты AWT могут отображать сценарии, поддерживаемые базовым хостом. Если ваша хост-система локализована на арабский язык, текстовые компоненты AWT будут отображаться на арабском языке. В арабской системе вы также сможете вводить арабский текст в такие компоненты, как TextField или TextArea. Однако нельзя ожидать, что те же самые компоненты AWT будут отображать текст, который не находится в том же сценарии, что и локализованный хост. Например, английский хост обычно не может отображать арабский язык в TextField. Однако компоненты Java Foundation Classes / Swing (JFC / Swing) часто могут поддерживать несколько сценариев из-за их независимости от платформы хоста и использования Unicode в качестве набора символов с несколькими сценариями. Следовательно, компоненты Swing часто могут отображать сценарий, даже если одноранговые компоненты AWT не могут. В таблице 6 показаны некоторые из поддерживаемых сценариев.

Таблица 6. Некоторые из поддерживаемых сценариев для отображения текста

Система письма Язык
арабский арабский
Упрощенный китайский) китайский язык
Китайский традиционный) китайский язык
Деванагари хинди
иврит иврит
Японский Японский
Корейский Корейский
Латинский: западноевропейское подмножество Английский, французский, немецкий, итальянский, испанский, шведский и т. Д.
Тайский Тайский
Греческий Греческий
Кириллица Белорусский, Русский и т. Д.
Латинский: балтийское подмножество Латышский, литовский
Латинский: подмножество Центральной Европы Чешский, венгерский, польский и т. Д.
Латинский: тюркское подмножество Турецкий и так далее

Локализации JRE и SDK

Элементы пользовательского интерфейса в среде выполнения были локализованы для нескольких языков. Эти элементы включают компоненты AWT и Swing и другие сообщения, генерируемые JRE и включенными инструментами. В таблице 7 показаны все локализации, предоставленные для J2SE 5.0.

Таблица 7. Переводы пользовательского интерфейса для JRE

Язык Идентификатор языкового стандарта
Упрощенный китайский) zh_CN
Китайский традиционный) zh_TW
английский en
французский язык fr
Немецкий де
Итальянский Это
Японский я
Корейский ко
испанский язык es
Шведский св

Некоторые инструменты, такие как компилятор Javac, поставляются только с J2SE Software Development Kit (SDK). Эти инструменты предоставляют пользователю сообщения об ошибках, предупреждения и информационные сообщения. Эти сообщения в служебных программах и инструментах SDK, включая компилятор, переводятся на английский и японский языки. Эти переводы доступны в J2SE 5.0 SDK.

Представление локали в виде строки

Хотя для большей части использования локали потребуется ссылка на объект Locale, иногда бывает удобно использовать альтернативное представление, особенно для целей внутренней отладки. Метод toString () объекта Locale возвращает строку, которая представляет собой объединение кодов языка, региона и вариантов. Метод toString () разделяет каждый компонент знаком подчеркивания _. Вы можете использовать этот метод во время отладки, поскольку он обеспечивает удобное и читаемое представление.

Рассмотрим локаль, созданную с помощью этого кода:

Locale l = новый Locale ("ja", "JP")

Метод toString () вернет ja_JP для этой локали.

Эта строка не подходит для представления большинству конечных пользователей. Большинство клиентов не знакомы со стандартами ISO 639 и 3166 для кодов языков и стран и сочтут строку слишком загадочной. К счастью, доступны более удобные текстовые представления, о которых мы поговорим позже в этой статье.

Использование локали

Хотя это не всегда очевидно, объекты Locale используются во всех библиотеках классов Java. Даже если вы явно не запрашиваете языковой стандарт, среда Java использует настройки локали по умолчанию, чтобы предоставить вам локализованную информацию и поведение. Когда вы используете явный языковой стандарт, вы можете использовать разные языковые стандарты для каждой части вашего приложения.

Например, вы можете использовать es_MX, испанский (Мексика), языковой стандарт для отображения локализованных сообщений на испанском языке и использовать en_US, английский (США), языковой стандарт для форматирования чисел и валюты. Такой вид поддержки будет полезен для испаноговорящих, которые живут и работают в Соединенных Штатах. Хотя пользователь приложения мог просматривать испанские меню, подсказки и текст, остальная часть приложения могла правильно форматировать числа и валюту для США. Это простой пример того, как вы можете использовать несколько локалей в одном приложении. Если вашим приложениям когда-либо потребуется поддержка этого уровня локали, у вас есть свобода определять поведение каждого аспекта приложения.

Некоторые классы, зависящие от языкового стандарта, форматируют числа, валюты, даты и время. Другие предоставляют услуги сопоставления, а также услуги разбиения по словам. Классы обычно предоставляют конструктор или фабричный метод для создания экземпляров. В каждом случае у вас обычно есть возможность указать явное предпочтение языкового стандарта.

Использование локали по умолчанию

Языковой стандарт по умолчанию используется объектами, зависящими от языкового стандарта, когда ваше приложение не указывает явный выбор языкового стандарта. В зависимости от локали по умолчанию нецелесообразно. В многопользовательских приложениях единый языковой стандарт по умолчанию обычно не подходит для всех, кто использует систему. Вместо этого ваше приложение должно явно предоставлять предпочтение всем объектам, зависящим от языкового стандарта. Языковой стандарт по умолчанию - это общесистемный ресурс, доступный во всем приложении для любого объекта, зависящего от языкового стандарта. По умолчанию это может быть правильным для пользователя вашего приложения, хотя вы должны быть явным в многоязычной или мультикультурной среде. Это особенно важно, когда ваше приложение работает на одном хосте, который поддерживает множество пользователей.

Получите языковой стандарт по умолчанию, используя следующий метод:

общедоступный статический языковой стандарт getDefault ()

Локаль по умолчанию для вашего приложения определяется тремя способами. Во-первых, если вы явно не изменили значение по умолчанию, метод getDefault () возвращает языковой стандарт, который изначально был определен виртуальной машиной Java (JVM) при ее первой загрузке. То есть JVM определяет языковой стандарт по умолчанию из среды хоста. Локаль среды хоста определяется операционной системой хоста и настройками пользователя, установленными в этой системе.

Во-вторых, в некоторых реализациях среды выполнения Java пользователь приложения может переопределить локаль хоста по умолчанию, предоставив эту информацию в командной строке, задав системные свойства user.language, user.country и user.variant.

Следующий код распечатает другой языковой стандарт в зависимости от значения этих свойств при его вызове:

Вы можете поэкспериментировать с приведенным выше примером кода. При запуске в системе на английском языке (США) приведенный выше код печатает en_US. Если вы предоставляете параметры командной строки, как описано выше, вы можете уговорить свое приложение использовать любой языковой стандарт, который вам нужен. Например, вы можете вызвать приложение следующим образом:

java -Duser.language = fr -Duser.country = CA По умолчанию

Этот вызов печатает fr_CA как локаль по умолчанию.

В-третьих, ваше приложение может вызывать метод setDefault (Locale aLocale). Метод setDefault (Locale aLocale) позволяет вашему приложению установить общесистемный ресурс. После того, как вы установите языковой стандарт по умолчанию с помощью этого метода, последующие вызовы Locale.getDefault () вернут недавно установленный языковой стандарт.

Примечание. Не вызывайте setDefault () в апплетах. Менеджер безопасности не позволит вам вызвать этот метод, потому что он влияет на общесистемный ресурс в JVM, который работает на хосте.

В большинстве случаев использование языкового стандарта по умолчанию с другими классами означает его полное игнорирование. Например, если вы хотите отформатировать число для локали по умолчанию, вы просто создаете NumberFormat без каких-либо аргументов:

NumberFormat nf = NumberFormat.getInstance ()

Вот и все. Использование локали по умолчанию практически ничего не требует с вашей стороны. Другие классы, зависящие от локали, следуют этому же шаблону. Если вы хотите использовать локаль по умолчанию, не делайте ничего особенного при создании объекта. Однако значение по умолчанию не всегда уместно, и в такие моменты вам нужно быть более точным.

Использование явной локали

В некоторых вычислительных средах приложения используют только одну локаль на протяжении всего своего жизненного цикла. В других средах приложения используют глобальный языковой стандарт, который можно изменить. Эти среды позволяют программно изменять глобальные настройки локали, которые остаются в силе до тех пор, пока вы снова не измените их явным образом. Среда приложений Java уникальна, так как она дает вам возможность использовать различные локали во всем приложении любым удобным для вас способом.

У транснациональных компаний есть клиенты по всему миру. Это означает, что и их клиенты, и сотрудники могут говорить на разных языках и иметь разные ожидания от того, как должна вести себя компания и ее программное обеспечение. Более того, вполне возможно, даже часто, чтобы французский сотрудник занимался продажей для итальянского клиента. В таких ситуациях вам потребуется абсолютный контроль над тем, какие языковые стандарты используются в вашем бизнесе и объектах пользовательского интерфейса для управления данными и их представления. Возможно, вашему приложению потребуется распечатать товарные чеки с использованием итальянских форматов даты и валюты, но при этом отсортировать списки клиентов для английского сотрудника отдела продаж. Комбинаций слишком много, чтобы их перечислять, но технология Java обеспечивает гибкость, позволяющую справиться с этой сложностью.

Чтобы получить максимальную гибкость, вы должны явно запросить поддержку целевого языкового стандарта для каждого зависимого от языкового стандарта класса, который вы используете. Это означает, что вы должны отслеживать предпочтения языкового стандарта для нескольких аспектов приложения или назначать предпочтения языкового стандарта разным пользователям и клиентам.

Если вы отслеживали предпочтения языкового стандарта пользователя, вы могли бы создать экземпляры классов, зависящих от языкового стандарта, явно указав языковой стандарт в конструкторе или методе создания. Представьте, что в объекте настроек хранится выбранный клиентом языковой стандарт:

Получение информации о локали

Хотя объекты Locale не содержат много информации, они предоставляют несколько интересных методов. Как и следовало ожидать, информация тесно связана с языком, страной и вариантом объекта. Часть этой информации не зависит от языкового стандарта, а часть - от языкового стандарта. Все это означает, что объект Locale имеет две разные формы для большинства своих методов. Один набор информации не ориентирован на клиента и не локализован. Другой набор локализован и подходит для презентации пользователю.

Информация, не зависящая от локали

Метод getLanguage () возвращает двухбуквенное сокращение ISO 639 для языка локали. Например, если вы создали локаль ja_JP, этот метод возвращает код ja. Полная подпись метода

общедоступная строка getLanguage ()

Расширение стандарта ISO 639 определяет трехбуквенные коды языков. Хотя эти коды в настоящее время не используются в J2SE 5.0, они доступны. Используйте следующий метод для получения трехбуквенного кода языка:


Локализация названий приложений

В основных настройках приложения в разделе настроек Steamworks можно ввести локализованные названия продукта. Они будут отображаться пользователям, использующим Steam на том или ином языке.

Если вы зададите локализованные названия в разделе настроек, они заменят любые названия, указанные для страницы в магазине на этом языке, так что локализованное название на странице в магазине всегда будет соответствовать названию, которое пользователь видит в библиотеке.

Локализованное название используется в поисковых предложениях для пользователей на этом языке, а исходное (не локализованное) название будет запасным вариантом. Кроме того, некоторые устаревшие приложения и API могут не распознавать язык и отображать исходное название.

Package Names can be localized as well. Select the package you would like to add a localized name to, click edit package name, then add localized name.


Country and State Reports

Explore the physical geography, human geography, and cultures of countries around the world.

Geography, Human Geography, Physical Geography

Get ideas for ways to explore the physical geography, human geography, and cultures of countries around the world.

More Ideas Like This

Make a Flag

Choose a country and recreate the country's flag using construction paper and markers or any other art supplies. On the back, write the name of the country, its capital city, its area, the size of its population, the language or languages its population speaks, and the currency. A country's flag is a representation of its identity. If you can find information on it, include what the colors or shapes on the flag represent or the history of the flag.

State Flags

Identify the state flags of the United States and your state. Also identify national and state symbols, such as birds and flowers.

Learn State Names and Capitals

Label a map of the United States with the names of each state and its capital city. To help you remember the names of all fifty states, learn the song "Fifty Nifty United States." Make sure the capital cities are marked in their correct locations. Use the MapMaker 1-Page Maps to print a map of the United States. Be sure to turn off the capital and state names.

Research a Country's Population

Pick one of the ten most populous countries and print a map of it using the MapMaker 1-Page Maps. On the map, write the country's population, average income, and life expectancy. Create a theory about what life might be like in this country. Then read about the country. Does what you learn make you want to revise your theory?

Population Pyramid

Explore the population of a country. How many people live there? What is the largest age bracket? What is the population growth rate—taking into account births, deaths, and migration? Look at the country's population pyramid.

Suggested countries: China, Canada, Ukraine, Philippines, New Zealand

Government Structures

Choose a country and explore its type of government. What is the basic form of government? How is it structured? What legal system does it use? How old do you have to be to vote? What is the relationship between local and national governments?

Suggested countries: Australia, Luxembourg, United Arab Emirates, Switzerland, Libya, Monaco, North Korea, Micronesia, Brunei

Explore the Area of a Country

What is the total number of square miles or square kilometers? How much of that is land and how much is water? How does the country rank compared to area in the rest of the countries of the world? What U.S. state, if any, is the country comparable to?

Suggested countries: Australia, Chile, Burkina Faso, Thailand, Spain, Qatar

Ethnic and Religious Groups

Research the major ethnic and religious groups in a country. Compare ethnic or cultural celebrations in your country and other countries. Summarize the contributions of selected ethnic groups to your national identity.

Suggested countries: Mexico, India, Fiji, Egypt, Ireland

Media Credits

The audio, illustrations, photos, and videos are credited beneath the media asset, except for promotional images, which generally link to another page that contains the media credit. The Rights Holder for media is the person or group credited.

Writer

Editor

Jessica Shea, National Geographic Society

Photo Researcher

For information on user permissions, please read our Terms of Service. If you have questions about how to cite anything on our website in your project or classroom presentation, please contact your teacher. They will best know the preferred format. When you reach out to them, you will need the page title, URL, and the date you accessed the resource.

Media

If a media asset is downloadable, a download button appears in the corner of the media viewer. If no button appears, you cannot download or save the media.

Text on this page is printable and can be used according to our Terms of Service.

Interactives

Any interactives on this page can only be played while you are visiting our website. You cannot download interactives.

Related Resources

Landforms and Landscapes

Search through these resources to discover more about unique landforms and landscapes around the world. Landforms are natural and distinctive features. Explore how they show up in various landscapes. These resources can be used to teach middle schoolers more about the natural world, its distinctive features, and landscapes.

Research Examples of Physical Geography

Students explore how specific features of physical geography affect nearby country borders. They conduct research on the North Sea, Scandinavia, the Strait of Gibraltar, and the Netherlands.

Fun with Geography

Get ideas for how to have fun with geography in your daily life.

More Physical Geography and Borders

Students research four additional examples of physical geography and borders. They explore how mountains, oceans, and islands create physical barriers that affect the country borders in Europe.

Related Resources

Landforms and Landscapes

Search through these resources to discover more about unique landforms and landscapes around the world. Landforms are natural and distinctive features. Explore how they show up in various landscapes. These resources can be used to teach middle schoolers more about the natural world, its distinctive features, and landscapes.

Research Examples of Physical Geography

Students explore how specific features of physical geography affect nearby country borders. They conduct research on the North Sea, Scandinavia, the Strait of Gibraltar, and the Netherlands.

Fun with Geography

Get ideas for how to have fun with geography in your daily life.

More Physical Geography and Borders

Students research four additional examples of physical geography and borders. They explore how mountains, oceans, and islands create physical barriers that affect the country borders in Europe.


Glossary:Country codes

Member States of the European Union (EU) and other countries have been assigned a two-letter country code, always written in capital letters, and often used as an abbreviation in statistical analyses, tables, figures or maps.


В protocol order in which countries are often listed is based on the alphabetical list of countries in their national language for EU and EFTA Member States and for candidate countries for potential candidates, it is based on the alphabetical order of their country code.

EU Member States come first, followed by European Free Trade Association (EFTA) Member States, candidate countries for EU membership, potential candidates and, finally, other countries. The order in the tables below is first column down, then second column down, etc..

Belgium (BE) Greece (EL) Lithuania (LT) Portugal (PT)
Bulgaria (BG) Spain (ES) Luxembourg (LU) Romania (RO)
Czechia (CZ) France (FR) Hungary (HU) Slovenia (SI)
Denmark (DK) Croatia (HR) Malta (MT) Slovakia (SK)
Germany (DE) Italy (IT) Netherlands (NL) Finland (FI)
Estonia (EE) Cyprus (CY) Austria (AT) Sweden (SE)
Ireland (IE) Latvia (LV) Poland (PL)

European Free Trade Association (EFTA)

Iceland (IS) Norway (NO)
Liechtenstein (LI) Switzerland (CH)

EU candidate countries

Montenegro (ME)
North Macedonia (MK)
Albania (AL)
Serbia (RS)
Turkey (TR)

Potential candidates (all other Western Balkan countries)

Bosnia and Herzegovina (BA)
Kosovo* (XK Ώ] )

Armenia (AM) Belarus (BY) Georgia (GE)
Azerbaijan (AZ) Moldova (MD) Ukraine (UA)

European Neighbourhood Policy (ENP)-South countries:

Algeria (DZ) Lebanon (LB) Syria (SY)
Egypt (EG) Libya (LY) Tunisia (TN)
Israel (IL) Morocco (MA)    
Jordan (JO) Palestine ΐ] (PS)    

Other European countries


Non-European countries

Argentina (AR) China (except Hong Kong) (CN_X_HK) Mexico (MX) South Africa (ZA)
Australia (AU) Hong Kong (HK) Nigeria (NG) South Korea (KR)
Brazil (BR) India (IN) New Zealand (NZ) Taiwan (TW)
Canada (CA) Japan (JP) Singapore (SG) Соединенные Штаты (US)

(*) This designation is without prejudice to positions on status, and is in line with UNSCR 1244/1999 and the ICJ Opinion on the Kosovo declaration of independence. (with asterisk and footnote in written documents, only the first time that Kosovo is mentioned).


041 Language Code (R)

The codes for the languages associated with an item when the fixed-field element Lang is insufficient to convey full information for multilingual items, items that are translations, or items where a medium of communication is a sign language.

The language codes found in schemes listed in Language Code and Term Source Codes may be used in field 041. OCLC prefers the use of MARC codes as found in MARC Code List for Languages. You may repeat 041 to include MARC codes if you use non-MARC codes. Примечание: Instructions and examples in this section will reflect the use of MARC codes.

You may also use field 546 to record language information in textual form.

Use field 041 in conjunction with Lang. Если Lang is coded zxx (No Linguistic Content), do нет record a code in field 041 in subfield ǂa or subfield ǂd. Если Lang contains a code other than zxx, record the same code from Lang in field 041 in subfield ǂa or subfield ǂd.

  • The item contains more than one language one of which may be a sign language
  • The item is or includes a translation
  • The language of the abstracts, accompanying material, or summaries differs from the language of the main item
  • The language of a table of contents differs from the language of the main item

Do нет use field 041 to record the MARC language code if there is only one language associated with the item already recorded in Lang.

Record codes for languages associated with the data and/or user interface (e.g., screen displays). Do нет use for machine languages (e.g., COBOL) or character codes (e.g., ASCII). Record such information in field 538.

Record codes for languages for the following linguistic content:

  • The score has text underlying printed music
  • The audio recording has sung or spoken text
  • The libretto has text presented separately
  • The language of accompanying text (e.g., critical commentary, program notes) differs from the language of the main item

Also record the following if readily ascertainable:

  • Original language of printed, sung, or spoken text
  • Original language of text presented separately (e.g., librettos)
  • Original language of accompanying text

Use for motion pictures, filmstrips, slides, transparencies, and videorecordings when:

  • The sound track has different language versions
  • The accompanying sound (discs, tapes, etc.) has different language versions
  • The overprinted titles (subtitles) or separate titles for silent films are in different languages
  • The sound accompanying a work is in one language and the same text is printed on the work in the form of overprinted titles in another language
  • Accompanying printed scripts are in multiple languages (e.g., one is in Spanish, one is in French, one is in English, etc.)
  • The medium of communication includes sign language

Field 041 may also be used to record additional language-related information about written or original languages on motion pictures and videorecordings.

For original or historical projectable graphic material, opaque graphic material, and three dimensional material, use when:

  • The language associated with the material (i.e., captions or other text associated with the item or collection that are part of the preferred source of information) is multilingual
  • The language of the accompanying material differs from the language associated with the item or collection

1st Indicator

Translation indication. Whether the work is or includes a translation. Assign the 1st indicator position from the content of the item itself. Accompanying material is not considered when determining if an item is a translation.

Примечание: When printed music contains a translation of a vocal text printed as text, the item is considered a translation, so use value 1.

No information provided.

Item not a translation/does not include a translation. The work is not a translation or does not include a translation.

Item is or includes a translation. The work is or includes a translation and is used regardless of whether the work in the original language has been published. If, however, the translated work is not entered under the preferred name/title or title for the original, for example, because the translation also involved adaptation, then the item is not considered a translation and the 1st indicator value is 0.

2nd Indicator

Source of code. The source of the language code used in the field.

MARC language code. The source of the code is MARC Code List for Languages.

Source specified in subfield ǂ2 . The source of the language code is indicated by a code in subfield ǂ2.

Subfields

The code for the language associated with the item. Если Lang is coded zxx (No Linguistic Content), do нет record a code in subfield ǂa. Если Lang contains a code other than zxx, record the same code from Lang in subfield ǂa.

Lang: eng
041 0 eng ǂa fre ǂa ger
[The item has text in English, French, and German]

For works in multiple languages, the codes for the languages are recorded in the order of their predominance. If predominance cannot be determined, record the codes in English alphabetical order. If the code mul (Multiple languages) is recorded in Lang (meaning the item is multilingual with no predominant language), the code for the title (or the first title, if there are more than one) and the code mul are recorded. Alternatively, any number of specific language codes may be recorded in repeating occurrences of subfield ǂa.

Lang: fre
041 0 fre ǂa eng
[The item has text in French (the predominant language) and English]
Lang: mul
041 0 mul ǂa rus
[The item has multilingual text with no predominant language and the title is in Russian]
Lang: sgn
041 0 sgn ǂa eng
[The item contains representations of the alphabet in sign language with minimal English text on title page]

When a work is a translation or includes a translation, the code for the language of the translation is recorded in subfield ǂa. The code for the language of the original work is recorded in subfield ǂh. The code for the language of an intermediate translation is recorded in subfield ǂk. If an item is in the original language with an accompanying translation, repeated subfields ǂa contain the codes for the languages of the translation and the original. The code for the original is also recorded in subfield ǂh.

Lang: eng
041 1 eng ǂh fre
[The item has text in English translated from French]
Lang: eng
041 1 eng ǂk ger ǂh swe
[The item has text in English translated from German originally published in Swedish]
Lang: eng
041 1 eng ǂa grc ǂh grc
[The item has text in both the original Greek and in an English translation]
Lang: eng
041 1 eng ǂh und
[The item has text in English and the original language is undetermined]
Lang: eng
041 1 eng ǂh mul
[The anthology of poems has text translated into English from multiple languages]

For continuing resources, when the language of the text changes over a period of time, record the codes for all of the languages.

Lang: eng
041 0 eng ǂa afr
546 In English, 1898-1963 English and Afrikaans, 1964-
[The language of the item has changed over time]

For computer files, record the language code associated with the data and/or user interface (e.g., screen displays) in subfield ǂa.

Lang: eng
041 0 eng ǂa spa
546 Interface in English citations chiefly in Spanish.
[The database has an English language interface with data chiefly in Spanish]

For musical works, record the language code corresponding to the textual contents in subfield ǂa only when the work is printed or manuscript music. If the work is an audio recording, record the language code in subfield ǂd.

Lang: ita
041 1
ǂd ita ǂe ita ǂe eng ǂn ita ǂg eng
546 Sung in Italian.
500 Program notes in English, and libretto with English translation (30 pages : illustrations 14 cm) inserted in container.
[The audio recording of a vocal work sung in Italian with accompanying program notes in English and libretto in Italian with English translation]
Lang: ita
041 1 ita ǂa ger ǂh ita ǂg eng ǂg ger ǂm eng
546 Italian words with German translation.
500 Preface by Andrew V. Jones in English with German translation.
[The score of a vocal work has lyrics in Italian with a German translation accompanied by an English preface with a German translation]

For moving image resources, subfield ǂa contains the language code of spoken or sung language associated with the item, as well as sign language and any language code of the languages of accompanying sound. Code languages used to provide access to a resource in an accessible alternative mode as appropriate in either subfields ǂp, ǂq, or ǂr.

For projected still images, such as filmstrips and slides, subfield ǂa contains the language code associated with the item, as well as any language code of the languages of accompanying printed script or accompanying sound. For all other still images, including original or historical graphic material and opaque and non-opaque graphic material, and for three-dimensional artifacts, subfield ǂa contains the code of languages associated with the material, i.e. captions or other text associated with the item or collection that are part of the preferred source of information.

The language code for summaries or abstracts regardless of whether they are the same or different from the languages recorded in subfield ǂa. Record multiple language codes in English alphabetical order.

Lang: eng
041 0 eng ǂb fre ǂb ger ǂb rus
[The item has text in English with summaries in French, German, and Russian]

For audio recordings, use for the language code of the accompanying material summaries that are not full translations of vocal works. Use also if a nonmusical audio recording has summaries of its contents as accompanying material.

The language code for the audible portion of an item, usually the sung or spoken content of an audio recording or computer file. Record the language code for the textual portion of an item in subfield ǂa. The language code in the first occurrence of subfield ǂd, in cases where there is no subfield ǂa, is also recorded in Lang.

The language code of the printed text when the item contains the vocal/textual content of the work(s) printed as text whether as accompanying material or printed with the item. This subfield is not restricted to librettos and may include other sung or spoken text. However, do нет use subfield ǂe for items covered by subfield ǂg.

The language code of the table of contents when it differs from the language of the text. Record the language codes in English alphabetical order.

The language code of accompanying material other than summaries or librettos when the material is considered significant. Use for codebooks, commentaries, manuals, prefaces, program notes, user instructions, etc.

Lang: ita
041 0 ǂd ita ǂg eng ǂg ita
[The audio recording of a vocal work sung in Italian with program notes in English and Italian]

For visual materials, use subfield ǂg for all accompanying material, except for accompanying printed script or accompanying sound which are recorded in subfield ǂa.

The language code for the original language. Original language may be recorded regardless of whether the 1st indicator indicates a translation (value 1). The language code is for the original language of the primary content of the item and it is not required to use it if the item is not a translation. The subfield follows the related subfields ǂa, ǂd, ǂh, or ǂk.

When indicating the original language of subsidiary materials (e.g., other liner notes, etc.), subfield ǂm is used.

Language code of the intertitles or title cards for silent films. Intertitles are filmed text that is shown between the scenes of a silent film to provide dialogue or narrative context.

Language code for the written language providing access to moving image materials, such as subtitles and silent film intertitles. It does not include the languages of the credits, packaging, or accompanying material. If needed, the language of credits is recorded in field 546 and the language of packaging or accompanying material is recorded in subfield ǂg.

Language code for an intermediate language between the original and the current translation, where the resource was translated from an intermediate language other than the original. The subfield follows the related subfield ǂa or ǂd.

Language code of original language of subsidiary materials other than librettos. The subfield follows the related subfield ǂb or ǂg.

Language code of original language of printed text of the vocal/textual content of the work. The subfield follows the related subfield ǂe.

Language code for language used in moving image resource captions, whether open captioning (Subtitles for the Deaf and Hard of Hearing (SDH)) or closed captioning (CC).

Language code for audio used as an alternative mode of access to the visual or textual content of a resource, e.g, Described Video, a supplementary audio track providing additional access to moving image visual content using audio description.

Language code for the visual language (non-textual) used to provide alternative access to the audio content of a resource, e.g., signed languages.

For resources where signed language is the primary mode of access, subfield ǂa should be used to record the language code for signed language.

Language code of the printed text of the spoken content for non-musical audiovisual works. For musical audiovisual works, the language code of the printed text of the sung and/or spoken content of the work should be recorded in subfield ǂe.

The source of the language code scheme used in the field. For MARC codes, see Language Code and Term Source Codes. For ISO codes, see Codes for the Representations of Names of Languages.

Data that link fields when non-Latin script is entered. This subfield is system supplied and does not appear in OCLC online displays. Do нет manually add subfield ǂ6. For more information about subfield ǂ6, see Control Subfields.

For information about subfield ǂ8, see Control Subfields.

Indexing

For indexing and searching information, see Searching WorldCat Indexes, field 041.

MARC 21

For more information, including content designator history, see MARC 21 Format for Bibliographic Data, field 041.


26 Answers 26

I think the main problem here is that the browser settings don't actually affect the navigator.language property that is obtained via javascript.

What they do affect is the HTTP 'Accept-Language' header, but it appears this value is not available through javascript at all. (Probably why @anddoutoi states he can't find a reference for it that doesn't involve server side.)

I have coded a workaround: I've knocked up a google app engine script at http://ajaxhttpheaders.appspot.com that will return you the HTTP request headers via JSONP.

(Note: this is a hack only to be used if you do not have a back end available that can do this for you. In general you should not be making calls to third party hosted javascript files in your pages unless you have a very high level of trust in the host.)

I intend to leave it there in perpetuity so feel free to use it in your code.

Here's some example code (in jQuery) for how you might use it

Hope someone finds this useful.

Edit: I have written a small jQuery plugin on github that wraps this functionality: https://github.com/dansingerman/jQuery-Browser-Language

Edit 2: As requested here is the code that is running on AppEngine (super trivial really):

window.navigator.userLanguage is IE only and it's the language set in Windows Control Panel - Regional Options and NOT browser language, but you could suppose that a user using a machine with Window Regional settings set to France is probably a French user.

navigator.language is FireFox and all other browser.

Some language code: 'it' = italy, 'en-US' = english US, etc.

As pointed out by rcoup и The WebMacheter in comments below, this workaround won't let you discriminate among English dialects when users are viewing website in browsers other than IE.

window.navigator.language (Chrome/FF/Safari) returns always browser language and not browser's preferred language, but: "it's pretty common for English speakers (gb, au, nz, etc) to have an en-us version of Firefox/Chrome/Safari." Hence window.navigator.language will still return en-US even if the user preferred language is en-GB .

Now there is a way to get Accept-Languages in Firefox and Chrome using navigator.languages (works in Chrome >= 32 and Firefox >= 32)

Also, navigator.language in Firefox these years reflects most preferred language of content, not language of UI. But since this notion is yet to be supported by other browsers, it is not very useful.

So, to get most preferred content language when possible, and use UI language as fallback:

I came across this piece of code to detect browser's language in Angular Translate module, which you can find the source here. I slightly modified the code by replacing angular.isArray with Array.isArray to make it independent of Angular library.

I only needed the primary component for my needs, but you can easily just use the full string. Works with latest Chrome, Firefox, Safari and IE10+.

navigator.userLanguage for IE

window.navigator.language for firefox/opera/safari

I've been using Hamid's answer for a while, but it in cases where the languages array is like ["en", "en-GB", "en-US", "fr-FR", "fr", "en-ZA"] it will return "en", when "en-GB" would be a better match.

My update (below) will return the first long format code e.g. "en-GB", otherwise it will return the first short code e.g. "en", otherwise it will return null.

Update: IE11 was erroring when some properties were undefined. Added a check to skip those properties.

There is no decent way to get that setting, at least not something browser independent.

But the server has that info, because it is part of the HTTP request header (the Accept-Language field, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4)

So the only reliable way is to get an answer back from the server. You will need something that runs on the server (like .asp, .jsp, .php, CGI) and that "thing" can return that info. Good examples here: http://www.developershome.com/wap/detection/detection.asp?page=readHeader

I've just come up with this. It combines newer JS destructuring syntax with a few standard operations to retrieve the language and locale.

I can't find a single reference that state that it's possible without involving the serverside.

In Microsoft Internet Explorer 4.0 and earlier, the browserLanguage property reflects the language of the installed browser's user interface. For example, if you install a Japanese version of Windows Internet Explorer on an English operating system, browserLanguage would be ja.

In Internet Explorer 5 and later, however, the browserLanguage property reflects the language of the operating system regardless of the installed language version of Internet Explorer. However, if Microsoft Windows 2000 MultiLanguage version is installed, the browserLanguage property indicates the language set in the operating system's current menus and dialogs, as found in the Regional Options of the Control Panel. For example, if you install a Japanese version of Internet Explorer 5 on an English (United Kingdom) operating system, browserLanguage would be en-gb. If you install Windows 2000 MultiLanguage version and set the language of the menus and dialogs to French, browserLanguage would be fr, even though you have a Japanese version of Internet Explorer.

Note This property does not indicate the language or languages set by the user in Language Preferences, located in the Internet Options dialog box.

Furthermore, it looks like browserLanguage is deprecated cause IE8 doesn't list it


Смотреть видео: Какой редактор кода выбрать в 2020 году для веб разработчика (October 2021).