Zum Ändern der Spracheinstellungen stehen mehrere Umgebungsvariablen zur Verfügung. Sie können Ihre aktuellen Ländereinstellungen anzeigen, indem Sie den localeBefehl ausführen . Verwenden Sie, um alle Ländereinstellungen in Englisch zu ändern LANG=C. Dieses CGebietsschema ist immer verfügbar, ohne dass zusätzliche Sprachpakete installiert werden müssen. ( Informationen zum vorübergehenden Wechseln in nicht englische Ländereinstellungen finden Sie in @ mklement0s Beitrag.)
Beispiele:
Ausführen eines Befehls mit den Standardspracheinstellungen und Drucken der aktuellen Gebietsschemaeinstellungen:
$ /nonexistent
bash: /nonexistent: Bestand of map bestaat niet
$ locale
LANG=nl_NL.UTF-8
LANGUAGE=
LC_CTYPE="nl_NL.UTF-8"
LC_NUMERIC="nl_NL.UTF-8"
LC_TIME="nl_NL.UTF-8"
LC_COLLATE="nl_NL.UTF-8"
LC_MONETARY="nl_NL.UTF-8"
LC_MESSAGES="nl_NL.UTF-8"
LC_PAPER="nl_NL.UTF-8"
LC_NAME="nl_NL.UTF-8"
LC_ADDRESS="nl_NL.UTF-8"
LC_TELEPHONE="nl_NL.UTF-8"
LC_MEASUREMENT="nl_NL.UTF-8"
LC_IDENTIFICATION="nl_NL.UTF-8"
LC_ALL=
Überschreibe vorübergehend die Sprache für ein Programm und zeige, dass es wirklich vorübergehend ist:
$ LANG=C ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ ls /nonexistent
ls: kan geen toegang krijgen tot /nonexistent: Bestand of map bestaat niet
Ändern Sie das Gebietsschema für alle in der aktuellen Shell ausgeführten Befehle und schließen Sie erneut Beweise ein:
$ LANG=C
$ ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ locale
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
@gertvdijk: Danke dafür; Der Grund, warum diese Antwort auch ohne Einstellung funktioniert, LANGUAGEist eine Ausnahme : GNU gettext hat Vorrang vor dem LANGUAGEWert, außer wenn der (effektive) LC_MESSAGESWert (in der Regel indirekt über LANGoder festgelegt LC_ALL) entweder Coder (sein Synonym) ist POSIX. Beachten Sie, dass LANGUAGEin dieser Antwort sein ungesetzt geschieht, während es wird standardmäßig festgelegt, und wenn es gesetzt ist, müssen Sie außer Kraft setzen es auf ein schalten bestimmten Gebietsschema Sprache (im Gegensatz zu „C“ / „POSIX“), die was du gefunden hast.
mklement0
Ihre Antwort funktioniert hervorragend, wenn Sie zum Gebietsschema "C" wechseln (mit Nachrichten in US-Englisch, wie erforderlich), funktioniert jedoch nicht für andere Gebietsschemas, es LANGUAGEsei denn, dies ist ausdrücklich deaktiviert oder wird überschrieben. Angesichts des generischen Titels der Frage wird diese Antwort wahrscheinlich auch in einer anderen Sprache als Englisch angezeigt. Fügen Sie diese Informationen daher Ihrer Antwort hinzu.
mklement0
@ mklement0 Angesichts des Kontextes der Frage (Posting englischer Fehlermeldungen) halte ich den aktuellen Beitrag für ausreichend. Sie können eine weitere Antwort hinzufügen, um die Details zu erläutern, LANGUAGEwenn Sie möchten :)
Lekensteyn
Ich habe meine eigene Antwort hinzugefügt , wie Sie vorgeschlagen haben. Wenn Sie mit meiner Einschätzung einverstanden sind, dass zukünftige Leser hierher kommen, um in eine andere Sprache zu wechseln (wie bereits von mehreren Personen aktiv angegeben), fügen Sie meiner Antwort auf Ihre Frage einen Link hinzu. Abgesehen davon schlage ich vor, den Wert von LANGUAGEin Ihrer Beispielausgabe auf zu ändern. Dies nlist der tatsächliche Standardwert, wenn Ihr Gebietsschema lautet nl_NL.UTF-8.
mklement0
8
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. esfür Spanisch.
Hintergrundinformation
GNU gettext -basierte Dienstprogramme Vorrang gibt den Nicht - Standard - LANGUAGEUmgebungsvariable [1]
über POSIX definierten locale Umgebungsvariablen LC_ALL, LC_MESSAGESund LANG(in dieser Reihenfolge).
Da dies LANGUAGEauf Ubuntu-Systemen standardmäßig eingestellt ist [2] , und zwar auf eine Teilzeichenfolge des LANGWerts, der entweder ein einfaches Sprachkennzeichen (z. B. esfür Spanisch) oder ein Sprachregionenkennzeichen (z. B. de_DEfü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 : esAd-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. esist ausreichend, Sie können jedoch es_AReine 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 ( esin diesem Fall).
Diese alternative Lösung undefinesLANGUAGE zuerst, und dann verwendet POSIX locale Umgebungsvariable LC_ALLimplizit 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_TIMEfür Datums- / Zeitformate) und durch (implizite) Einstellung LC_MESSAGESauch Nicht- GNU-Programme über die gewünschte Sprache informiert werden.
Beachten Sie, LC_ALLdass der genaue vollständige Name des Gebietsschemas, einschließlich des Zeichensatz-Suffix, wirksam sein muss ( es_ES.UTF-8) (im Gegensatz LANGUAGEzu einem einfachen Sprach-Tag (wie es)). Gleiches gilt für Einstellung LC_MESSSAGESund 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 LANGUAGEwird eine Ausnahme : Wenn die (effektive) LC_MESSAGESWert ( in der Regel eingestellt indirekt über LANGoder LC_ALL) entweder Coder (dessen Synonym) POSIX, wird dieser Wert eingehalten, unabhängig von dem Wert von LANGUAGE, wenn überhaupt. Umgekehrt hat der (effektive) LC_MESSAGESWert 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 LANGUAGEsollte nicht standardmäßig festgelegt werden, da in Abwesenheit der vom LC_MESSAGESWert implizierte LANGWert (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=Coder 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_utilitytut 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?LANGUAGE
ist eine Ausnahme : GNU gettext hat Vorrang vor demLANGUAGE
Wert, außer wenn der (effektive)LC_MESSAGES
Wert (in der Regel indirekt überLANG
oder festgelegtLC_ALL
) entwederC
oder (sein Synonym) istPOSIX
. Beachten Sie, dassLANGUAGE
in dieser Antwort sein ungesetzt geschieht, während es wird standardmäßig festgelegt, und wenn es gesetzt ist, müssen Sie außer Kraft setzen es auf ein schalten bestimmten Gebietsschema Sprache (im Gegensatz zu „C“ / „POSIX“), die was du gefunden hast.LANGUAGE
sei denn, dies ist ausdrücklich deaktiviert oder wird überschrieben. Angesichts des generischen Titels der Frage wird diese Antwort wahrscheinlich auch in einer anderen Sprache als Englisch angezeigt. Fügen Sie diese Informationen daher Ihrer Antwort hinzu.LANGUAGE
wenn Sie möchten :)LANGUAGE
in Ihrer Beispielausgabe auf zu ändern. Diesnl
ist der tatsächliche Standardwert, wenn Ihr Gebietsschema lautetnl_NL.UTF-8
.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 UmgebungsvariablenLC_ALL
,LC_MESSAGES
undLANG
(in dieser Reihenfolge).Da dies
LANGUAGE
auf Ubuntu-Systemen standardmäßig eingestellt ist [2] , und zwar auf eine Teilzeichenfolge desLANG
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 überschreibenLANGUAGE
, damit die Nachrichten einer anderen Sprache wirksam werden. [3]Option 1: Einstellen
LANGUAGE
Beispiel :
es
Ad-hoc zu spanischen ( ) Nachrichten wechseln:Hinweis : Ein einfaches Sprachkennzeichen wie z. B.
es
ist ausreichend, Sie können jedoches_AR
eine Regionskennung (zes_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 UmgebungsvariableLC_ALL
implizit festgelegtLC_MESSAGES
[4] :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) EinstellungLC_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 GegensatzLANGUAGE
zu einem einfachen Sprach-Tag (wiees
)). Gleiches gilt für EinstellungLC_MESSSAGES
undLANG
. 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 überLANG
oderLC_ALL
) entwederC
oder (dessen Synonym)POSIX
, wird dieser Wert eingehalten, unabhängig von dem Wert vonLANGUAGE
, wenn überhaupt. Umgekehrt hat der (effektive)LC_MESSAGES
Wert Vorrang , wenn es sich um ein anderes bestimmtes Gebietsschema handeltLANGUAGE
.[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 vomLC_MESSAGES
Wert implizierteLANG
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
oderLANGUAGE=POSIX
(als Alternative zuLANG=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 Wahlen_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), wohingegenLANGUAGE= 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.
quelle