Warum ändert das Überschreiben der LANG-Umgebungsvariablen die Sprache für mich nicht?

11

Ich versuche, eine Anwendung in einer anderen Sprache als meine aktuelle Umgebung auszuführen. Um einfach anzufangen, wollte ich die Sprache von ändern ls.

Folgendes habe ich überall gelesen (siehe unten für verwandte Fragen): Stellen Sie LANGeines der unterstützten Gebietsschemas ein, z.

LANG=nl_NL.UTF-8 ls /nonexistent

damit es die niederländische (NL) Ausgabe zeigt.

Ich erhalte jedoch immer noch eine englische Ausgabe:

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

Meine aktuelle Umgebung:

$ 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=

Um sicher zu gehen, habe ich überprüft:

  • Das Gebietsschema wird unterstützt:

    $ grep nl_NL /usr/share/i18n/SUPPORTED 
    nl_NL.UTF-8 UTF-8
    nl_NL ISO-8859-1
    nl_NL@euro ISO-8859-15
    
  • Das Gebietsschema wird generiert:

    sudo locale-gen nl_NL.UTF-8
    

    und sudo dpkg-reconfigure localeszeigt auch, dass es generiert wird.

  • Installierte das niederländische Sprachpaket (bereits installiert):

    sudo apt-get install language-pack-nl
    

Was habe ich noch versucht?

  • Verwenden Sie export, um beide zu setzen LANGund LANGUAGEanstatt den Befehl voranzustellen.
  • Einstellung auch LC_ALL.

Ironischerweise sind einige (nur einige!) GUI-Anwendungen tatsächlich auf Niederländisch, aber das habe ich überhaupt nicht konfiguriert!

Geben Sie hier die Bildbeschreibung ein

Ich bin auf Kubuntu 12.04 (.2), ​​soweit das wichtig ist.

Ähnliche Fragen (ohne Erfolg):

Was ist los auf meinem System? Wo kann man das weiter debuggen?

gertvdijk
quelle

Antworten:

12

Weil LANGUAGE, das Vorrang vor LANG hat, gesetzt und unverändert ist.

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

Weitere Informationen finden Sie in der GNU-Gettext-Dokumentation :

GNU gettext bevorzugt LANGUAGE gegenüber LC_ALL und LANG, um Nachrichten zu verarbeiten. LANG (oder LC_ALL) muss jedoch weiterhin auf die Primärsprache eingestellt sein. Dies wird von anderen Teilen der Systembibliotheken benötigt.

Gunnar Hjalmarsson
quelle
Ich würde schwören, dass ich das schon versucht hatte. Wenn ich mir jedoch meinen Shell-Verlauf anschaue, denke ich, dass dies daran liegt, dass ich dies erst versucht habe, bevor ich das Gebietsschema generiert habe. Könnten Sie eine Quelle angeben, warum "SPRACHE Vorrang vor SPRACHE hat"? Danke für die Warnung.
Gertvdijk