В вычислительной технике локаль — это набор параметров , определяющих язык пользователя, регион и любые особые варианты предпочтений, которые пользователь хочет видеть в своем пользовательском интерфейсе . Обычно идентификатор локали состоит как минимум из кода языка и кода страны/региона. Локаль — важный аспект i18n .
Эти настройки обычно включают следующие настройки формата отображения (вывода):
Настройки локали касаются форматирования вывода с учетом локали. Таким образом, информация о часовом поясе и летнем времени обычно не являются частью настроек локали. Менее распространена настройка формата ввода, которая в основном определяется для каждого приложения.
В этих условиях
и других (в настоящее время) средах на основе Unicode , они определяются в формате, похожем на BCP 47. Обычно они определяются только кодами ISO 639 (язык) и ISO 3166-1 alpha-2 (страна из 2 букв).
В стандартных C и C++ локаль определяется в "категориях" LC_COLLATE (сортировка текста), LC_CTYPE (класс символов), LC_MONETARY (формат валюты), LC_NUMERIC (формат чисел) и LC_TIME (формат времени). Специальная категория LC_ALL может использоваться для установки всех настроек локали. [1]
Стандартных названий локалей, связанных со стандартами C и C++, не существует, за исключением названия «минимальной локали» «C», хотя формат POSIX является общепринятой базовой версией.
На платформах POSIX , таких как Unix , Linux и других, идентификаторы локали определяются способом, аналогичным определению языковых тегов BCP 47 , но модификатор варианта локали определяется по-другому, а набор символов опционально включается как часть идентификатора. Формат POSIX или "XPG" - [language[_territory][.codeset][@modifier]] . (Например, австралийский английский, использующий кодировку UTF-8 , - en_AU.UTF-8 .) [2] Отдельно ISO/IEC 15897 описывает другую форму, language_territory+audience+application,sponsor_version , хотя весьма сомнительно, используется ли она вообще. [3]
В следующем примере приведен вывод команды locale
для чешского языка (cs), Чешская Республика (CZ) с явной кодировкой UTF-8 :
$ локальЯЗЫК=cs_CZ.UTF-8LC_CTYPE="cs_CZ.UTF-8"LC_NUMERIC="cs_CZ.UTF-8"LC_TIME="cs_CZ.UTF-8"LC_COLLATE="cs_CZ.UTF-8"LC_MONETARY="cs_CZ.UTF-8"LC_MESSAGES="cs_CZ.UTF-8"LC_PAPER="cs_CZ.UTF-8"LC_NAME="cs_CZ.UTF-8"LC_ADDRESS="cs_CZ.UTF-8"LC_TELEPHONE="cs_CZ.UTF-8"LC_MEASUREMENT="cs_CZ.UTF-8"LC_IDENTIFICATION="cs_CZ.UTF-8"LC_ALL=
Windows использует определенные строки языка и территории. Идентификатор локали (LCID) для неуправляемого кода в Microsoft Windows — это число, например 1033 для английского языка (США), или 2057 для английского языка (Великобритания), или 1041 для японского языка (Япония). Эти числа состоят из кода языка (нижние 10 бит) и кода культуры (верхние биты), и поэтому часто записываются в шестнадцатеричной нотации, например 0x0409, 0x0809 или 0x0411. Microsoft начинает вводить интерфейсы прикладного программирования (API) управляемого кода для .NET, которые используют этот формат. Одной из первых, которая будет выпущена в целом, является функция для смягчения проблем с интернационализированными доменными именами , [4] но больше их в Windows Vista Beta 1.
Начиная с Windows Vista, были введены новые функции [5] , использующие имена локалей BCP 47 , чтобы заменить почти все API на основе LCID.
Формат имени локали, аналогичный POSIX, language[_country-region[.code-page]] доступен в UCRT (Universal C Run Time) Windows 10 и 11. [6]
спецификаций культурного нарратива и локалей POSIX идентификатор токена будет следующим: 8_9+11+12,13_14
java.util.Locale
Документация API Javadoc