![locale: Для чего используется переменная LANGUAGE? (и когда?)](https://rvso.com/image/1311332/locale%3A%20%D0%94%D0%BB%D1%8F%20%D1%87%D0%B5%D0%B3%D0%BE%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B5%D1%82%D1%81%D1%8F%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20LANGUAGE%3F%20(%D0%B8%20%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0%3F).png)
Я пытаюсь понять локали, используемые в Linux. На моей системе Ubuntu 11.10 locale
выдает следующее:
LANG=en_DK.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE=en_GB.UTF-8
LC_NUMERIC="en_DK.UTF-8"
LC_TIME="en_DK.UTF-8"
LC_COLLATE=en_GB.UTF-8
LC_MONETARY="en_DK.UTF-8"
LC_MESSAGES=en_GB.UTF-8
LC_PAPER="en_DK.UTF-8"
LC_NAME="en_DK.UTF-8"
LC_ADDRESS="en_DK.UTF-8"
LC_TELEPHONE="en_DK.UTF-8"
LC_MEASUREMENT="en_DK.UTF-8"
LC_IDENTIFICATION="en_DK.UTF-8"
LC_ALL=
( en_dk
для использования международного формата дня, континентального европейского формата чисел (1.234,56) и т. д.)
Думаю, я понимаю, что LC_*
делает семейство: это LANG
резервный вариант, если один из них не установлен, и LC_ALL устанавливает все LC_*
переменные в свое значение.
Чего я пока не знаю, так это то, чтоLANGUAGE
используется для. Обозначение en_GB:en
напоминает мне Accept-Language
заголовок HTTP. С настройками выше это будет означать, что используется британский английский, если для него существует перевод. В противном случае будет использоваться любой существующий английский перевод (en_US, en_AU, ..., любой другой).
Прав ли я?
А также какие программы на самом деле подчиняются LANGUAGE
настройке? Насколько она отличается от LC_MESSAGES
?
К сожалению, man locale
документирует только LC_*
семейство. А поиск в Интернете по запросу «linux locale LANGUAGE» или аналогичному запросу — это немой пункт. (Конечно, слово «язык» часто используется, когда речь идет о локалях, и оно также может быть показано только в выводе locale
без обсуждения).
Кто-нибудь из вас может мне помочь?
решение1
Он переопределяет локаль, указанную в$LC_ALL
в отношении каталогов сообщений gettext. В противном случае он не используется.