Zmienna środowiskowa LANG i LANGUAGE w systemach opartych na Debianie

22

Wygląda na to, że zmienne środowiskowe LANG i LANGUAGE są używane przez niektóre programy do określania języka interfejsu użytkownika.

Jaka jest dokładna semantyka tych zmiennych i gdzie mogę przeczytać o ich poprawnym użyciu? Strona man dla locale (1) wspomina tylko o rodzinie zmiennych środowiskowych LC_ *. Dodatkowo często występuje też zmienna LC_ALL, która również tam nie jest opisana.

aef
źródło

Odpowiedzi:

23

LANGzawierają ustawienie dla wszystkich kategorii, które nie są ustawione bezpośrednio przez LC_*zmienną.

LC_ALLsłuży do zastępowania każdy LC_*i LANGi LANGUAGE. Nie powinien być ustawiony w normalnym środowisku użytkownika, ale może być przydatny, gdy piszesz skrypt, który zależy od dokładnego wyniku polecenia internacjonalizowanego.

LANGUAGEsłuży do ustawiania języków komunikatów (as LC_MESSAGES) na wartość wielowartościową, np. ustawienie na fr:de:enużycie wiadomości francuskich tam, gdzie one istnieją; jeśli nie, użyje wiadomości niemieckich i wróci do angielskiego, jeśli nie będą dostępne wiadomości niemieckie ani francuskie.

Rémi
źródło
Gdzie mogę znaleźć dokumentację na temat JĘZYKA? Czy to wyklucza się wzajemnie z LC_MESSAGES?
aef
1
@ Rémi, czy możesz wyjaśnić, dlaczego LC_ALLnie powinien być używany?
Édouard Lopez
1
Niewiele do powiedzenia. Masz większą elastyczność, jeśli ustawisz LANG, niż jeśli ustawisz LC_ALL: możesz ustawić LANG na coś, a LC_COLLATE na coś innego. Jeśli ustawisz LC_ALL, każda inna konfiguracja zostanie ukryta.
Rémi
2
Nie wydaje mi się, aby LC_ALLzastępowało LANGUAGE: 1. mają różne znaczenia (kolejność [np .: fr: de: en] vs. cechy [np: fr_FR])
Murmel
6
Rozdział 2. GNU Gettext dokumentacji elektrycznej za Określanie priorytetową listę języków, stwierdza: gettext gives preference to LANGUAGE over LC_ALL and LANG. Ponadto rozdział Locale Environment Variables stanowi:1. LANGUAGE 2. LC_ALL [...]
Murmel,
10

Spójrz na stronę podręcznika locale(7): opisuje, że LANGjest to ustawienie rezerwowe, a LC_ALLzastępuje wszystkie osobne LC_*ustawienia.

Jaap Eldering
źródło
3
man 7 locale to polecenie
Smile4ever
2

Dla odniesienia, systemem ustawień narodowych jest GNU GetText, który ma pełną dokumentację dostępną w pakiecie gettext-doc (Debian / Ubuntu).

Alternatywnie dostępna jest instrukcja online z wiarygodną i rozbudowaną dokumentacją zmiennych środowiskowych LANG i LANGUAGE .

mikini
źródło