Befehlsausgabesprache von Muttersprache auf Englisch umschalten

84

Wie kann ich die Befehlsausgabesprache von meiner Muttersprache auf Englisch umstellen, damit ich meine Frage zu Ask Ubuntu mit der englischen Befehlsausgabe (Fehlermeldungen) posten kann?

BuZZ-dEE
quelle
5
Das ist etwas irreführend. Es ist eigentlich nicht notwendig, dass Menschen dies tun . (Wenn Sie der Meinung sind, dass OPs sich auf diese Weise selbst belasten müssen, posten Sie dies bitte auf Meta, bevor Sie jemanden dazu auffordern.) Sie können sich LANGwie folgt ändern , und es kann hilfreich sein, aber es ist nicht erforderlich, dass kopierte Fehlermeldungen in englischer Sprache vorliegen. Wir verlangen, dass das, was der Autor geschrieben hat, auf Englisch ist (obwohl wir es normalerweise übersetzen, anstatt Fragen zu schließen). Daher ist eine Frage in Englisch mit spanischem Terminaltext in Ordnung, eine Frage in Spanisch mit englischem Terminaltext dagegen nicht.
Eliah Kagan
4
@EliahKagan ja, du hast recht, aber trotzdem halte ich es für nützlich.
BuZZ-dEE
2
Ich stimme zu, es ist nützlich für die Leute, dies zu können, und gut, dass Sie diese Frage gestellt haben! Allerdings ist es wichtig , die Menschen wissen , dass wir nicht brauchen , dies zu tun (aber nicht verlangen , dass Fragen und Antworten selbst auf Englisch geschrieben werden).
Eliah Kagan
8
@EliahKagan Im Gegenteil, es ist sehr wichtig, aktuelle Fehlermeldungen zu veröffentlichen, und es ist äußerst empfehlenswert, sie auf Englisch zu veröffentlichen, da dies das Hauptpublikum dieser Site erkennen und testen kann. (Und poste niemals eine neu übersetzte Fehlermeldung. Kopiere immer die Paste-Funktion, da der genaue Wortlaut, die Zeichensetzung und sogar der Abstand signifikant sein können.)
Gilles,

Antworten:

74

export LC_ALL=Creicht. Alle nachfolgenden Befehlsausgaben erfolgen in englischer Sprache.

Weitere Informationen: Was macht "LC_ALL = C"?

Wenn Sie zur Muttersprache zurückkehren möchten, deaktivieren Sie die LC_ALLVariable:

unset LC_ALL
Eric Carvalho
quelle
13

Bash-Funktion für das Terminal

Hier ist meine Bash-Funktion zum Umschalten zwischen DE- und EN-Gebietsschemas.

Sie können diesen Code mit Ihren bevorzugten Sprachen erweitern. Um dies zu benutzen, lege es in dein ~/.bashrc(oder ~/.bash_profile) -

Nennen Sie es mit _configure_locale EN, um zu Englisch zu wechseln.

function _configure_locale() { # [profile]
    local profile=${1:-EN}
    case ${profile} in
      DE|DE_DE|de_DE)
          LC_ALL="de_DE.UTF-8"
          LANG="de_DE.UTF-8"
          LANGUAGE="de_DE:de:en_US:en"
          ;;
      EN|EN_US|en|en_US)
          LC_ALL="en_US.UTF-8"
          LANG="en_US.UTF-8"
          LANGUAGE="en_US:en"
          ;;
      *)
          echo "ALERT" "${FUNCNAME}: unknown profile '${profile}'"
          ;;
      esac
      LC_PAPER="de_DE.UTF-8"; # independent from locale
      LESSCHARSET="utf-8";    # independent from locale
      MM_CHARSET="utf-8"      # independent from locale
      echo "locale settings" "${LANG}";
      export LC_ALL LANG LANGUAGE LC_PAPER LESSCHARSET MM_CHARSET
}

Im Allgemeinen schlage ich vor , alle drei Umgebungsvariablen zu ändern LC_ALL, LANG, LANGUAGEFehlverhalten einiger Programme zu vermeiden.

Anpassung an Ihre Sprache

Das Erweitern des Codes auf Ihre Muttersprache ist ganz einfach. Sie finden die erforderlichen Werte, indem Sie den folgenden Befehl aufrufen

env |egrep -e 'LC_ALL|LANG'
H.-Dirk Schmitt
quelle
Das Skript muss für eine andere Sprache als Deutsch (DE) geändert werden? Ich suche nach einer Lösung, die von der Muttersprache unabhängig ist.
BuZZ-dEE
@ BuZZ-dEE: Sie können (und sollten es wahrscheinlich auch) problemlos anpassen, indem Sie das werfen caseund die Eingabe so festlegen, dass sie dem <lang>_<country>Format entspricht. Dann können Sie es einfach unter der Annahme von UTF-8 durchlaufen. Wenn Sie wirklich eine aufgeräumte Lösung suchen, sollten Sie wahrscheinlich die Benutzereingaben überprüfen locale -a, um sicherzustellen, dass das angeforderte Gebietsschema tatsächlich installiert ist.
Bitmaske
@ Buzz-Dee: Siehe aktualisierte Antwort
H.-Dirk Schmitt
7

Öffnen Sie ein Terminal Ctrl+ Alt+ Tund Typ:

LANG=en_US.UTF-8 bash

oder :

LC_ALL=C bash

Jetzt ist die Terminalausgabe in englischer Sprache. Sie können es mit überprüfen locale.

Es ist möglich, einen Befehl zu geben, um dies mit einer dauerhaftenalias zu tun . Öffnen Sie die .bashrcDatei mit Ihrem bevorzugten Editor und geben Sie den folgenden Code ein:

alias basheng='LANG=en_US.UTF-8 bash'

oder :

alias basheng='LC_ALL=C bash'

Starten Sie die Bash-Shell neu. Jetzt hast du den Befehl basheng. Tippe es in den Bash, um eine englische Bash-Shell zu erhalten. So verlassen Sie den englischen Shell-Typ exit.

Quelle:

BuZZ-dEE
quelle
Einstellung LANGist nicht ausreichend , um alle Chance Ausgang.
Bitmaske
@bitmask ist das: LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bashbesser?
BuZZ-dEE
2
Eigentlich sollte das so sein LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL.
Bitmaske
Nur LC_ALL = C Bash funktioniert für mich.
Liquide
5

Dies wird über Gebietsschemaeinstellungen konfiguriert, die über Umgebungsvariablen festgelegt werden können. Es gibt vier Ebenen mit Variablen. Der erste Wert hat Vorrang:

  • LANGUAGE- Verwenden Sie es nicht, es ist selten nützlich und kann Fehler verursachen. Leider haben es einige Versionen von Ubuntu eingestellt, so dass Sie es möglicherweise deaktivieren müssen.
  • LC_ALL- überschreibt kategoriespezifische Einstellungen, die in erster Linie von Programmen verwendet werden sollen, die im Standardgebietsschema ausgeführt werden sollen. Nicht zur Verwendung als globale Einstellungen gedacht.
  • Kategoriespezifischen Variablen beginnend mit LC_: LC_CTYPE, LC_MESSAGES, LC_TIME, ....
  • LANG - Legt das Standardgebietsschema für alle Kategorien fest, die in globalen Benutzereinstellungen verwendet werden sollen.

Das "normale" Gebietsschema mit allen nicht übersetzten Nachrichten, Standardzeit- und Zahlenformaten, ASCII als Zeichensatz usw. wird aufgerufen C. Dieses Gebietsschema ist auf jedem System vorhanden.

Um also ein Programm mit Meldungen in Englisch auszuführen, führen Sie Folgendes aus

unset LANGUAGE; LC_MESSAGES=C myprogram --option

oder

unset LANGUAGE
export LC_MESSAGES=C
myprogram --option
myotherprogram

Führen Sie aus, um ein Programm mit deaktivierter Lokalisierung auszuführen

env -u LANGUAGE LC_ALL=C myprogram --option

Beachten Sie jedoch, dass dadurch die Zeichencodierung auf ASCII umgestellt wird (also kein Unicode, Latin-1 usw.).

Siehe Was soll ich für mein Gebietsschema festlegen und was bedeutet dies? Für eine detailliertere Übersicht der Gebietsschemas.

Gilles
quelle
Verwenden Sie keine Sprache? Ich weiß nicht, auf welchem ​​Betriebssystem Sie sich befinden, aber unter Ubuntu wird LANGUAGE standardmäßig die ganze Zeit über das Installationsprogramm und verschiedene GUIs verwendet. Welche Bugs sind das übrigens? Ich habe auch die Antwort gelesen, auf die Sie verwiesen haben , und auch wenn sie nützliche allgemeine Informationen enthält, ist die Empfehlung auf einem Ubuntu-Desktop einfach kein guter Rat.
Gunnar Hjalmarsson
@GunnarHjalmarsson Das Hauptproblem dabei LANGUAGEist, dass es Vorrang hat LC_ALL, was zu Fehlern führt, da Programme so eingestellt sind LC_ALL, dass sie eine vorhersehbare Ausgabe erhalten, und dann verwirrt sind, weil sie nicht die erwartete Ausgabe erhalten.
Gilles
Nun, die Ubuntu-GUIs setzen sowohl LANG als auch LANGUAGE konsistent (und LC_MESSAGES erbt von LANG), was diese Art von Verwirrung verhindern sollte. Der Grund für die Einstellung von LANGUAGE ist, dass die Sprachunterstützung über eine Schnittstelle zum Festlegen einer Prioritätsliste verfügt.
Gunnar Hjalmarsson
@ GunnarHjalmarsson Ich weiß. Das Einstellen LANGUAGEist dennoch eine schlechte Idee, da die Vorteile sehr gering sind, während die Fehler ärgerlich und schwer zu finden sein können. Sie haben jedoch Recht, ich sollte das Aufheben erwähnen LANGUAGE.
Gilles
Antworten hier sind kein geeigneter Ort, um Designfragen zu diskutieren. Solche Diskussionen finden besser zB bei Ubuntu-Devel-Discussion statt . Um Benutzern zu helfen, denke ich wirklich, dass eine Antwort auf dem aktuellen Design basieren sollte, unabhängig davon, ob Sie es für optimal halten oder nicht. Bitte beachten Sie, dass "einige Versionen" alle unterstützten Versionen von Ubuntu-Desktops und -Derivaten sind, möglicherweise mit Ausnahme von Kubuntu.
Gunnar Hjalmarsson
1

Am einfachsten öffnen Sie das Terminal, indem Sie Alt + F2 drücken und den folgenden Befehl ausführen:

env LANGUAGE=en gnome-terminal
Gunnar Hjalmarsson
quelle
1

in deinem ~/.bashrc

unset LC_ALL
export LC_MESSAGES=C

dann

source ~/.bashrc

prüfen Sie

$ locale
LANG=pl_PL.utf8
LANGUAGE=
LC_CTYPE="pl_PL.utf8"
LC_NUMERIC="pl_PL.utf8"
LC_TIME="pl_PL.utf8"
LC_COLLATE="pl_PL.utf8"
LC_MONETARY="pl_PL.utf8"
LC_MESSAGES=C
LC_PAPER="pl_PL.utf8"
LC_NAME="pl_PL.utf8"
LC_ADDRESS="pl_PL.utf8"
LC_TELEPHONE="pl_PL.utf8"
LC_MEASUREMENT="pl_PL.utf8"
LC_IDENTIFICATION="pl_PL.utf8"
LC_ALL=

Warum zuerst deaktivieren?

LC_ALL Überschreibt einzelne LC_ * -Einstellungen: Wenn LC_ALL eingestellt ist, hat keine der folgenden Auswirkungen.

https://help.ubuntu.com/community/Locale

Rofrol
quelle
Ich weiß nicht, warum diese Antwort abgelehnt wurde. Ja, es könnte etwas mehr Erklärung gebrauchen, aber anders als die akzeptierte Antwort zeigt es, wie man es dauerhaft macht und ist spezifischer.
Xerus
0
  1. Klicken Sie links auf das Zahnradsymbol (Systemeinstellungen im Unity-Bedienfeld).
  2. Klicken Sie auf Sprachunterstützung
  3. Wählen Sie Regionale Formate
  4. Stellen Sie "Zahlen, Datumsangaben und Währungsbetrag anzeigen ..." auf Englisch ein.
  5. Sitzung abmelden und erneut anmelden (Erforderlich!)

Getan.

Robin Hsu
quelle