LANG and LANGUAGE environment variable in Debian based systems
LANG
contain the setting for all categories that are not directly set by a LC_*
variable.
LC_ALL
is used to override every LC_*
and LANG
and LANGUAGE
. It should not be set in a normal user environment, but can be useful when you are writing a script that depend on the precise output of an internationalized command.
LANGUAGE
is used to set messages languages (as LC_MESSAGES
) to a multi-valued value, e.g., setting it to fr:de:en
will use French messages where they exist; if not, it will use German messages, and will fall back to English if neither German nor French messages are available.
Have a look at the manpage locale(7)
: it describes that LANG
is a fallback setting, while LC_ALL
overrides all separate LC_*
settings.
For reference, the locale system is GNU GetText, which has its full documentation available in the gettext-doc package (Debian/Ubuntu).
Alternatively, there is an online manual with authoritative and elaborate documentation of the LANG and LANGUAGE environment variables.