Die hilfreiche Antwort von Lekensteyn eignet sich hervorragend, wenn Sie je nach Anforderung des OP auf US-Englisch umstellen möchten. Wenn Sie jedoch bei Bedarf auf eine andere Sprache umstellen möchten , ist mehr Arbeit erforderlich.
Bevor Sie beginnen, müssen Sie Nachrichtentabellen mit installieren sudo apt-get install language-pack-<lang-tag>
. Dabei <lang-tag>
handelt es sich um einen einfachen RTF 5646-Untertag , z. B. es
für Spanisch.
Hintergrundinformation
GNU gettext -basierte Dienstprogramme Vorrang gibt den Nicht - Standard - LANGUAGE
Umgebungsvariable [1]
über POSIX definierten locale Umgebungsvariablen LC_ALL
, LC_MESSAGES
und LANG
(in dieser Reihenfolge).
Da dies LANGUAGE
auf Ubuntu-Systemen standardmäßig eingestellt ist [2] , und zwar auf eine Teilzeichenfolge des LANG
Werts, der entweder ein einfaches Sprachkennzeichen (z. B. es
für Spanisch) oder ein Sprachregionenkennzeichen (z. B. de_DE
für die deutsche Variante von Deutsch) widerspiegelt , Sie müssen die Option deaktivieren oder überschreiben LANGUAGE
, damit die Nachrichten einer anderen Sprache wirksam werden. [3]
Option 1: Einstellen LANGUAGE
Beispiel : es
Ad-hoc zu spanischen ( ) Nachrichten wechseln:
$ LANGUAGE=es ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
Hinweis : Ein einfaches Sprachkennzeichen wie z. B. es
ist ausreichend, Sie können jedoch es_AR
eine Regionskennung (z es_AR.UTF-8
. B. für Argentinien) und sogar ein Zeichensatzsuffix (z . B. ) hinzufügen .
Lokalisierte Nachrichten sind jedoch möglicherweise nur auf Sprachebene vorhanden , und der Fallback besteht darin, Nachrichten zu verwenden, die dem Sprachteil entsprechen ( es
in diesem Fall).
Option 2: Deaktivieren LANGUAGE
und festlegenLC_ALL
Diese alternative Lösung undefines LANGUAGE
zuerst, und dann verwendet POSIX locale Umgebungsvariable LC_ALL
implizit festgelegt LC_MESSAGES
[4] :
$ LANGUAGE= LC_ALL=es_ES.UTF-8 ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
Diese Lösung hat den Vorteil, dass alle Lokalisierungsaspekte auf das angegebene Gebietsschema eingestellt werden (z. B. LC_TIME
für Datums- / Zeitformate) und durch (implizite) Einstellung LC_MESSAGES
auch Nicht- GNU-Programme über die gewünschte Sprache informiert werden.
Beachten Sie, LC_ALL
dass der genaue vollständige Name des Gebietsschemas, einschließlich des Zeichensatz-Suffix, wirksam sein muss ( es_ES.UTF-8
) (im Gegensatz LANGUAGE
zu einem einfachen Sprach-Tag (wie es
)). Gleiches gilt für Einstellung LC_MESSSAGES
und LANG
. Die Angabe eines ungültigen / nicht installierten Gebietsschemanamens führt zu einem Fallback auf das POSIX-Gebietsschema und damit auf US-Englisch.
Fußnoten
[1] Die Gründe dafür , dass Lekensteyn Antwort funktioniert auch ohne Entschärfen / Überschreiben LANGUAGE
wird eine Ausnahme : Wenn die (effektive) LC_MESSAGES
Wert ( in der Regel eingestellt indirekt über LANG
oder LC_ALL
) entweder C
oder (dessen Synonym) POSIX
, wird dieser Wert eingehalten, unabhängig von dem Wert von LANGUAGE
, wenn überhaupt. Umgekehrt hat der (effektive) LC_MESSAGES
Wert Vorrang , wenn es sich um ein anderes bestimmtes Gebietsschema handelt LANGUAGE
.
[2] Dies gilt für Ubuntu selbst , jedoch nicht unbedingt für andere Geschmacksrichtungen . Lekensteyn besagt , dass Kubuntu ist nicht festgelegt LANGUAGE
.
Möglicherweise LANGUAGE
sollte nicht standardmäßig festgelegt werden, da in Abwesenheit der vom LC_MESSAGES
Wert implizierte LANG
Wert (der das aktuelle Gebietsschema bestimmt) eingehalten wird.
[3] Sie können diesen Ansatz auch verwenden, um zu [US] -Englisch zu wechseln, indem Sie entweder LANGUAGE=C
oder LANGUAGE=POSIX
(als Alternative zu LANG=C
/ LANG=POSIX
) zuweisen , obwohl mir unklar ist, ob dies aktiv erkannt wird oder einfach ein Fallback- Mechanismus ist, da diese Werte nicht zutreffen Beginnen Sie nicht mit einem Sprach- Tag. Vielleicht wäre die bessere Wahl en_US
.
[4] Es gibt eine Kante Fall, dass dieser Ansatz nicht funktioniert: Der Versuch , eine ausführbare Datei mit einem aufzurufen Weg - ob relativer oder absoluten - nicht an die angegebenen Sprache schaltet, während ein bloßer Dateiname tut:
LANGUAGE= LC_ALL=es_ES.UTF-8 /path/to/no_such_utility
tut nicht Arbeit (Ausgänge eine Meldung im aktuellen Gebietsschema), wohingegen
LANGUAGE= LC_ALL=es_ES.UTF-8 no_such_utility
(eine spanische Fehlermeldung ausgibt).
Wenn jemand weiß warum und ob es einen guten Grund dafür gibt, lass es uns wissen.
LANG
oderLANG_ALL
funktioniert bei mir noch nichtLANGUAGE
. Siehe Warum ändert das Überschreiben der Umgebungsvariablen LANG nicht die Sprache für mich?