Pourquoi la substitution de la variable d'environnement LANG ne change-t-elle pas la langue pour moi?

11

J'essaie d'exécuter une application dans une autre langue que mon environnement actuel. Pour commencer simple, je voulais changer la langue de ls.

Voici ce que j'ai lu partout (voir ci-dessous pour les questions connexes): défini LANGsur l'un des paramètres régionaux pris en charge, par exemple:

LANG=nl_NL.UTF-8 ls /nonexistent

pour qu'il affiche la sortie en néerlandais (NL).

Cependant, je reçois toujours une sortie en anglais:

$ LANG=nl_NL.UTF-8 ls -al /nonexistent
ls: cannot access /nonexistent: No such file or directory

Mon environnement actuel:

$ locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=

Pour être sûr, j'ai vérifié:

  • Les paramètres régionaux sont pris en charge:

    $ grep nl_NL /usr/share/i18n/SUPPORTED 
    nl_NL.UTF-8 UTF-8
    nl_NL ISO-8859-1
    nl_NL@euro ISO-8859-15
    
  • Les paramètres régionaux sont générés:

    sudo locale-gen nl_NL.UTF-8
    

    et sudo dpkg-reconfigure localesmontre également qu'il est généré.

  • Installé le pack de langue néerlandais (déjà installé):

    sudo apt-get install language-pack-nl
    

Quoi d'autre ai-je essayé?

  • Utiliser exportpour définir les deux LANGet LANGUAGEau lieu de faire précéder la commande.
  • Réglage également LC_ALL.

Ironiquement, certaines (seulement certaines!) Applications GUI sont en fait en néerlandais, mais je n'ai pas du tout configuré cela!

entrez la description de l'image ici

Je suis sur Kubuntu 12.04 (.2), ​​pour autant que cela compte.

Questions similaires (en vain):

Qu'est-ce qui ne va pas sur mon système? Où déboguer cela plus loin?

gertvdijk
la source

Réponses:

12

Parce que LANGUAGE, qui a priorité sur LANG, est défini et inchangé.

$ LANGUAGE=nl ls /nonexistent
ls: kan geen toegang krijgen tot /nonexistent: Bestand of map bestaat niet

Plus d'informations sont dans la documentation GNU gettext :

GNU gettext donne la préférence à LANGUAGE sur LC_ALL et LANG à des fins de gestion des messages, mais vous devez toujours avoir LANG (ou LC_ALL) défini sur la langue principale; cela est requis par d'autres parties des bibliothèques système.

Gunnar Hjalmarsson
la source
Je jure que j'avais déjà essayé ça. Pourtant, en regardant mon historique de shell, je pense que c'est parce que j'ai seulement essayé cela avant de générer les paramètres régionaux. Pourriez-vous inclure une source expliquant pourquoi "LANGUE a priorité sur LANG"? Merci pour l'information.
gertvdijk