В системах UNIX / Linux эта настройка называется локалью POSIX [7] и стандартизирована как IEEE Std 1003.1-2017 [3]. Такой языковой стандарт может различаться для системы в целом и отдельных учетных записей пользователей, поскольку каждый отдельный пользователь может индивидуализировать свою рабочую среду. В этой статье мы объясним вам, как определить текущую настройку локали в Debian GNU / Linux, понять его отдельные регулировочные винты и как адаптировать систему к вашим потребностям.
Обратите внимание, что эта статья адаптирована к Debian GNU / Linux Release 10 «Buster». Если не указано иное, описанные здесь методы также работают для его производных, таких как Ubuntu или Linux Mint [8].
Что такое регион?
Вообще говоря, регион - это набор ценностей, которые отражают характер и обычаи страны или культуры. Среди прочего, эти значения хранятся как переменные среды, которые представляют язык, кодировку символов, форматирование даты и времени, размер бумаги по умолчанию, валюту страны, а также первый день недели.
Как упоминалось ранее, существует общая настройка, известная как «локаль по умолчанию», и пользовательская настройка. Локаль по умолчанию работает в масштабе всей системы и хранится в файле / etc / default / locale. В листинге 1 показан языковой стандарт по умолчанию в Debian GNU / Linux с использованием немецкого в качестве основного языка и 8-битного юникода (UTF-8) в качестве набора символов [11].
Листинг 1. Локаль по умолчанию в немецком Debian GNU / Linux
$ cat / etc / default / locale # Файл, созданный с помощью update-locale LANG = «de_DE.UTF-8 ”$ --Обратите внимание, что в отличие от Debian GNU / Linux, в некоторых более ранних версиях Ubuntu общесистемные настройки локали хранятся в / etc / locale.conf.
Пользовательские настройки хранятся в виде скрытого файла в вашем домашнем каталоге, а фактические файлы, которые оцениваются, зависят от используемой вами оболочки входа в систему [6]. Традиционная оболочка Борна (/ bin / sh) [4] читает два файла / etc / profile и ~ /.profile, тогда как оболочка Bourne-Again (Bash) (/ bin / bash) [5] читает / etc / profile и ~ /.bash_profile. Если ваша оболочка входа - Z shell (/ bin / zsh) [9], два файла ~ /.zprofile и ~ /.zlogin читаются, но не ~ /.profile, если не вызывается в режиме эмуляции оболочки Bourne [10].
Запуск оболочки в терминале в существующем сеансе приводит к интерактивной оболочке без входа в систему. Это может привести к чтению следующих файлов - ~ /.bashrc для Bash и / etc / zshrc, а также ~ /.zshrc для оболочки Z [6].
Название языкового стандарта
Как объясняется здесь [12], имя локали следует определенному шаблону. Шаблон состоит из кодов языков, кодировки символов и описания выбранного варианта.
Имя начинается со строчного двухбуквенного кода языка ISO 639-1 [13] или трехбуквенного кода языка ISO 639-2 [14], если язык не имеет двухбуквенного кода. Например, это de для немецкого, fr для французского и cel для кельтского. После кода для многих, но не для всех языков, следует знак подчеркивания _ и двухбуквенный код страны по стандарту ISO 3166 [15]. Например, это приводит к de_CH для швейцарского немецкого языка и fr_CA для франкоязычной системы для канадского пользователя, который, вероятно, находится в Квебеке.
Необязательно точка . следует за именем кодировки символов, например UTF-8 или ISO-8859-1, а за знаком @ следует имя варианта. Например, имя [адрес электронной почты защищен] описывает настройку английской системы для Ирландии с кодировкой символов UTF-8 и евро в качестве символа валюты.
Команды и инструменты
Количество команд, относящихся к локали, относительно невелико. Список содержит локаль, которая отображает только текущие настройки локали. Второй - localectl, который можно использовать для запроса и изменения настроек локали системы и раскладки клавиатуры. Чтобы активировать локаль, в игру вступают инструменты dpkg-reconfigure и locale-gen - см. Пример ниже.
Показать используемый языковой стандарт
Шаг первый - определить текущую локаль в вашей системе с помощью следующей команды locale:
Листинг 2: Показать текущий языковой стандарт
$ locale LANG = de_DE.UTF-8 LANGUAGE = LC_CTYPE = «de_DE.UTF-8 »LC_NUMERIC =« de_DE.UTF-8 ”LC_TIME = «de_DE.UTF-8 »LC_COLLATE =« de_DE.UTF-8 »LC_MONETARY =« de_DE.UTF-8 ”
LC_MESSAGES = «de_DE.UTF-8 »LC_PAPER =« de_DE.UTF-8 ”LC_NAME =“ de_DE.UTF-8 ”
LC_ADDRESS = «de_DE.UTF-8 »LC_TELEPHONE =« de_DE.UTF-8 »LC_MEASUREMENT =« de_DE.UTF-8 ”
LC_IDENTIFICATION = «de_DE.UTF-8 ”LC_ALL = $ --
Обратите внимание, что другие дистрибутивы Linux, кроме Debian GNU / Linux, могут использовать дополнительные переменные среды, не указанные выше. Одиночные переменные имеют следующее значение:
- LANG: определяет языковой стандарт по умолчанию при отсутствии других переменных среды, связанных с языковым стандартом
- LANGUAGE: список языков перевода резервных сообщений
- LC_CTYPE: классификация символов и преобразование регистра
- LC_NUMERIC: числовое форматирование
- LC_TIME: форматы даты и времени
- LC_COLLATE: порядок сопоставления (сортировки)
- LC_MONETARY: денежное форматирование
- LC_MESSAGES: Формат интерактивных слов и ответов
- LC_PAPER: размер бумаги по умолчанию для региона
- LC_NAME: форматы имен
- LC_ADDRESS: соглашение, используемое для форматирования уличных или почтовых адресов
- LC_TELEPHONE: условные обозначения, используемые для представления телефонных номеров
- LC_MEASUREMENT: система измерения по умолчанию, используемая в регионе
- LC_IDENTIFICATION: метаданные о информации о языковом стандарте
- LC_RESPONSE: определяет, как ответы (например, Да и Нет) отображаются на местном языке (не используется Debian GNU / Linux, но Ubuntu)
- LC_ALL: отменяет все другие переменные локали (кроме LANGUAGE)
Список доступных языков
Затем вы можете перечислить доступные локали в вашей системе, используя команду locale с опцией -a. -a - это сокращение от -all-locales:
Листинг 3: Показать доступные языковые стандарты
$ locale -a C C.UTF-8 de_DE @ евро de_DE.utf8 en_US.utf8 POSIX $ --В листинге 3 представлены два языковых стандарта для немецкого (Германия) и английского (США). Три записи C, C.UTF-8 и POSIX являются синонимами и представляют настройки по умолчанию, которые подходят для данных, анализируемых компьютерной программой. Вывод в листинге 3 основан на списке поддерживаемых локалей, хранящемся в / usr / share / i18n / SUPPORTED.
Кроме того, добавление опции -v (сокращение от -verbose) к вызову приводит к гораздо более обширным выводам, включающим метаданные LC_IDENTIFICATION о каждой локали. На рисунке 1 это показано для вызова из листинга 3.
Чтобы увидеть, какие локали уже существуют, а какие нуждаются в дополнительной помощи для завершения, вы также можете взглянуть на карту проекта Locale Helper Project [20]. Красные маркеры ясно показывают, какие локации еще не достроены. На рисунке 2 показаны регионы Южной Африки, которые выглядят вполне законченными.
Показать доступные карты персонажей
Команда locale поставляется с параметром -m, который является сокращением от -charmaps. Вывод показывает доступные карты символов или файлы описания наборов символов [16]. Такой файл предназначен для «определения характеристик для набора кодированных символов и кодировки для символов, указанных в Portable Character Set, и может определять кодировку для дополнительных символов, поддерживаемых реализацией» [16]. Листинг 4 иллюстрирует это с выдержкой всего списка.
Листинг 4: Файлы описания наборов символов
$ locale -m ANSI_X3.110-1983 ANSI_X3.4-1968 ARMSCII-8 ASMO_449 BIG5 BIG5-HKSCS… $ --Показать определения переменных локали
Каждая переменная, используемая для локали, имеет собственное определение. Используя параметр -k (сокращение от -keyword-name), команда locale подробно отображает этот параметр. Листинг 5 иллюстрирует это для переменной LC_TELEPHONE, как она определена в немецкой среде - формат номера телефона, формат внутреннего телефона, международный код выбора, а также код страны (международный префикс) и набор кодов. См. Проект Locale Helper [20] для подробного описания значений.
Листинг 5: Подробная информация о LC_TELEPHONE
$ locale -k LC_TELEPHONE tel_int_fmt = «+% c% a% l» tel_dom_fmt = «% A% l»int_select = «00» int_prefix = «49» phone-codeset = «UTF-8» $ --
Изменение текущего языкового стандарта
Знание языкового стандарта становится необходимым, как только вы запускаете систему, которая поставляется с другой локалью, чем вы привыкли - например, в живой системе Linux. Изменить языковой стандарт можно двумя способами - перенастроить пакет локалей Debian [19] и добавить требуемый языковой стандарт с помощью команды locale-gen. Для первого варианта: выполнение следующей команды открывает текстовое диалоговое окно конфигурации, показанное на рисунке 3:
# dpkg-reconfigure locales
Нажмите пробел, чтобы выбрать нужный языковой стандарт из списка, показанного в диалоговом окне, и нажмите «ОК», чтобы подтвердить свой выбор. Следующее диалоговое окно предлагает вам список локалей, доступных для локали по умолчанию. Выберите нужный и нажмите «ОК». Теперь соответствующие файлы локали созданы, и ранее выбранный языковой стандарт установлен для вашей системы.
Для второго варианта создание желаемой локали выполняется с помощью команды locale-gen. Листинг 6 иллюстрирует это для французской установки:
Листинг 6: Создание французского языкового стандарта
locale-gen fr_FR.UTF-8Создание языковых стандартов… fr_FR.UTF-8… готово Генерация завершена. # --
Чтобы использовать ранее сгенерированный языковой стандарт в качестве языкового стандарта по умолчанию, выполните команду из листинга 7, чтобы настроить его правильно:
Листинг 7: Установка языкового стандарта вручную
# update-locale LANG = fr_FR.UTF-8Как только вы откроете новый сеанс терминала или повторно войдете в систему, изменения будут активированы.
Скомпилируйте файл определения локали
Команда localectl помогает вручную скомпилировать файл определения локали. Чтобы создать настройку французского языка, выполните следующую команду:
Листинг 8: Компиляция определения локали
# localedef -i fr_FR -f UTF-8 fr_FR.UTF-8Заключение
Понимание языковых стандартов может занять некоторое время, так как на это влияет несколько факторов. Мы объяснили, как определить текущий языковой стандарт и как его правильно изменить. Теперь адаптация системы Linux к вашим потребностям должна стать для вас намного проще.
Ссылки и ссылки
- [1] Локаль, Debian Wiki
- [2] ChangeLanguage, Как изменить язык вашей системы Debian
- [3] POSIX Locale, The Open Group Base Specifications, выпуск 7, издание 2018 г
- [4] Оболочка Борна, Википедия
- [5] Оболочка Bourne-Again, Википедия
- [6] Разница между оболочкой входа и оболочкой без входа?, StackExchange
- [7] Интерфейс переносимой операционной системы (POSIX), Википедия
- [8] Linux Mint
- [9] Z Shell, Википедия
- [10] Встроенные команды оболочки Zsh
- [11] UTF-8, Википедия
- [12] Что мне следует установить в моем языковом стандарте и каковы последствия этого?
- [13] ISO 639-1, Википедия
- [14] ISO 639-2, Википедия
- [15] ISO 3166, Википедия
- [16] Файлы описания наборов символов
- [17] Локаль, Ubuntu Wiki
- [19] locales Пакет Debian
- [20] Проект Locale Helper