Переменная среды LANG и LANGUAGE в системах на основе Debian

22

Похоже, что переменные окружения LANG и LANGUAGE используются некоторыми программами для определения языка пользовательского интерфейса.

Какова точная семантика этих переменных и где я могу прочитать об их правильном использовании? На man-странице для locale (1) упоминается только семейство переменных среды LC_ *. Кроме того, обычно имеется переменная LC_ALL, которая там тоже не описана.

Американские экспедиционные войска
источник

Ответы:

23

LANGсодержит настройки для всех категорий, которые не установлены непосредственно LC_*переменной.

LC_ALLиспользуется для переопределения каждого LC_*и LANGи LANGUAGE. Его не следует устанавливать в обычной пользовательской среде, но он может быть полезен при написании сценария, который зависит от точного вывода интернационализированной команды.

LANGUAGEиспользуется для установки языков сообщений (as LC_MESSAGES) в многозначное значение, например, при установке его fr:de:enбудет использоваться французские сообщения там, где они существуют; в противном случае он будет использовать немецкие сообщения и будет использовать английский, если ни немецкие, ни французские сообщения недоступны.

Рэй
источник
Где я могу найти документацию о ЯЗЫКЕ? Является ли он взаимоисключающим для LC_MESSAGES?
AEF
1
@ Реми, можешь ли ты уточнить, почему LC_ALLне следует использовать?
Эдуард Лопес
1
Не так много, чтобы сказать. У вас больше гибкости, если вы установите LANG, чем если вы установите LC_ALL: вы можете установить LANG на что-то, а LC_COLLATE - на что-то другое. Если вы установите LC_ALL, все остальные настройки будут скрыты.
Реми
2
Я не думаю, что LC_ALLпереопределения LANGUAGE: 1. они имеют разные значения (порядок [например: fr: de: en] и характеристики [например: fr_FR])
Мурмель
6
Глава 2. GNU GetText ДОКУМЕНТАЦИЯ в Указание списка приоритетов Языков гласит: gettext gives preference to LANGUAGE over LC_ALL and LANG. Кроме того, глава Locale Environment Variables гласит:1. LANGUAGE 2. LC_ALL [...]
Murmel
10

Взгляните на справочную страницу locale(7): она описывает, что LANGэто запасной вариант, но LC_ALLпереопределяет все отдельные LC_*настройки.

Яап Элдерни
источник
3
команда man 7 locale
Smile4ever
2

Для справки: языковой стандарт GNU GetText, полная документация которого доступна в пакете gettext-doc (Debian / Ubuntu).

Кроме того, имеется онлайн-руководство с достоверной и подробной документацией по переменным среды LANG и LANGUAGE .

mikini
источник