Wie ändert man die Sprache der Kommandozeilenschnittstelle von Git?

103

Ich möchte die Sprache von git (in Englisch) in meiner Linux-Installation ändern, ohne die Sprache für andere Programme zu ändern, und konnte die Einstellungen nicht finden. Wie es geht?

user905686
quelle
1
Sie möchten das Gebietsschema ändern. Ich würde diese Frage auf Superuser erneut veröffentlichen, denke ich.
JosefAssad

Antworten:

145

Fügen Sie diese Zeilen zu Ihrem hinzu ~/.bashrcoder ~/.bash_profilezwingen Sie git, alle Nachrichten auf Englisch anzuzeigen:

# Set Git language to English
#alias git='LANG=en_US git'
alias git='LANG=en_GB git'

Der Alias ​​muss LC_ALLauf einigen Systemen überschrieben werden, wenn die Umgebungsvariable festgelegt LC_ALList, die Vorrang vor hat LANG. Weitere Erläuterungen finden Sie in der UNIX-Spezifikation - Umgebungsvariablen .

# Set Git language to English
#alias git='LC_ALL=en_US git'
alias git='LC_ALL=en_GB git'

Falls Sie diese Zeilen zum ~/.bashrcAlias hinzugefügt haben, wird dieser definiert, wenn eine neue interaktive Shell gestartet wird. Falls Sie es ~/.bash_profiledem Alias hinzugefügt haben, wird es beim Anmelden angewendet.

Bengt
quelle
Der Dateiname enthielt einen Tippfehler ( .bash.rcanstelle von .bashrc). Sie müssen die Shell auch schließen und erneut starten .bashrc, damit sie ausgeführt wird. Ich habe auch dazu einen Hinweis hinzugefügt.
Bengt
Ich habe es .bashrcsogar beim Neustart versucht . Aliase funktionieren. Es ist nur die Sprache, die sich nicht ändert.
user905686
Um zu überprüfen, ob das .bashrcerfolgreich ausgeführt wird, können Sie einen Test wie echo "This is .bashrc"am Ende der Datei hinzufügen . Sie können es auch bei Bedarf ausführen lassen, ohne das Terminal oder das gesamte System von neu starten zu müssen . .bashrc. Schließlich würde ich vorschlagen, LC_ALLstattdessen die Umgebungsvariable festzulegen LANG, da die erste Vorrang hat.
Bengt
Bei mir .bashrcist wirklich alles in Ordnung . Wenn LC_ALLVorrang hat, ist dies das Problem. Es wird auf meine Sprache eingestellt. Aber dann möchte ich die allgemeine Spracheinstellung nicht ändern ... Kann ich sie nicht für ein Programm überschreiben?
user905686
1
Sie können die Sprache mit der vorgeschlagenen Methode ohne Nebenwirkungen einstellen, da diese Variablen nur so lange gültig sind, wie der Befehl zum Beenden benötigt wird. Versuchen Sie es, indem Sie laufen $ LC_ALL="en_US" manund dann$ man
Bengt
20

Wenn Sie stattdessen nur einen Befehl in Englisch haben möchten, können Sie einfach LC_ALL=Cvor dem Befehl schreiben , zum Beispiel:

LC_ALL=C git status

wird darin enden, dass

# On branch master
nothing to commit, working directory clean

Das in verwendete Gebietsschema Cist Englisch und immer verfügbar, ohne dass zusätzliche Sprachpakete installiert werden müssen
(siehe https://askubuntu.com/a/142814/34298 ).

Um es für die gesamte aktuelle Bash-Sitzung zu ändern, geben Sie einfach ein

LANG=C

Um es zum Beispiel auf Deutsch zu ändern, geben Sie ein

LANG=de_DE.UTF-8
rubo77
quelle
Vielen Dank für den LC_ALL=CVorschlag, da ich einige Probleme mit dem Gebietsschema habe und in LC_ALL="en_US"letzter Zeit nicht mehr funktioniert habe.
user905686
11

Das Hinzufügen dieser Zeile löste das Problem für mich:

$ more ~/.bash_profile
export LANG=en_US
Donald Duck
quelle
2
Die Frage ist, wie man die Sprache nur für Git ändert - ich habe sie aktualisiert, um sie klarer zu machen.
user905686
6

Hinweis: Seit Git 2.3.1+ (Q1 / Q2 2015) fügt Git nach Möglichkeit den Accept-Language-Header hinzu.
Siehe Commit f18604b von Yi EungJun ( eungjun-yi)

Fügen Sie einen Accept-LanguageHeader, der vom Benutzer bevorzugten Sprachen definiert durch angibt $LANGUAGE, $LC_ALL, $LC_MESSAGESund $LANG.

Dies gibt Git-Servern die Möglichkeit, Remote-Fehlermeldungen in der vom Benutzer bevorzugten Sprache anzuzeigen.


Sie haben ein Gebietsschema für Git Gui oder andere GUIs .aber nicht für die Kommandozeile, da dies eine der Fragen von GitSurvey 2010 war

localization of command-line messages (i18n)    258     3.6%    

Natürlich seit 2010, wie po/READMEbeschrieben:

Bevor Zeichenfolgen übersetzt werden können, müssen sie zuerst für die Übersetzung markiert werden.

Git verwendet eine Internationalisierung Schnittstelle , die das Systems hüllt gettextBibliothek , so dass die meisten der Beratung in Ihrer gettext Dokumentation (auf GNU - Systemen info gettextin einem Terminal) gilt.

In Kraft seit Git 1.7.9+ (Januar 2012):

Git gettextübersetzt die häufigsten Schnittstellenmeldungen in die Sprache des Benutzers, wenn Übersetzungen verfügbar sind und das Gebietsschema entsprechend festgelegt ist .
Händler können neue PODateien po/ablegen, um neue Übersetzungen hinzuzufügen.

Wenn Ihr Update die Übersetzung durcheinander gebracht hat, überprüfen Sie, was gettextverwendet wird:
Siehe beispielsweise " Gebietsschema-Umgebungsvariablen ".

Ein Gebietsschema besteht aus mehreren Gebietsschemakategorien, siehe Aspekte. Wenn ein Programm nach Gebietsschema-abhängigen Werten sucht, führt es dies gemäß den folgenden Umgebungsvariablen in der Prioritätsreihenfolge aus:

LANGUAGE
LC_ALL
LC_xxx, according to selected locale category: LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, ...
LANG 

Variablen, deren Wert festgelegt, aber leer ist, werden bei dieser Suche ignoriert.

LANGist die normale Umgebungsvariable zum Angeben eines Gebietsschemas. Als Benutzer legen Sie diese Variable normalerweise fest (es sei denn, einige der anderen Variablen wurden bereits vom System in /etc/profileoder in ähnlichen Initialisierungsdateien festgelegt).

LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, Und so weiter, sind die Umgebungsvariablen gemeint außer Kraft setzt LANGnur eine einzige locale Kategorie und zu beeinflussen.
Angenommen, Sie sind ein schwedischer Benutzer in Spanien und möchten, dass Ihre Programme Zahlen und Daten gemäß den spanischen Konventionen verarbeiten. Nur die Nachrichten sollten auf Schwedisch sein. Anschließend können Sie mithilfe des Programms ein Gebietsschema mit dem Namen " sv_ESoder" erstellen . Es ist jedoch einfacher und erzielt den gleichen Effekt, die Variable auf und die Variable auf zu setzen . Diese beiden Gebietsschemas sind bereits mit dem Betriebssystem vorinstalliert.sv_ES.UTF-8localedefLANGes_ES.UTF-8LC_MESSAGESsv_SE.UTF-8

LC_ALList eine Umgebungsvariable, die all diese überschreibt. Es wird normalerweise in Skripten verwendet, in denen bestimmte Programme ausgeführt werden. Zum Beispiel configure - Skripte von GNU erzeugt autoconfGebrauch , LC_ALLum sicherzustellen , dass die Konfigurationstests funktionieren nicht in locale abhängiger Weise.

Einige Systeme befinden sich leider LC_ALLin /etc/profileoder in ähnlichen Initialisierungsdateien. Als Benutzer müssen Sie diese Variable daher deaktivieren, wenn Sie LANGeinige der anderen LC_xxxVariablen festlegen möchten .

VonC
quelle
Woher kommt also die Übersetzung? Der Grund, warum ich gefragt habe, ist, dass ich vor und nach einem Update Git in Englisch hatte, das sich in meine Sprache geändert hat, aber das gefällt mir nicht.
user905686
@ user905686 Entschuldigung, mein Fehler. Git unterstützt das Gebietsschema mit gettext. Überprüfen Sie also Ihre Umgebungsvariablen. Ich gebe in meiner bearbeiteten Antwort an, welche ich einchecken soll.
VonC
Was ist, wenn ich nur die Sprache für Git ändern möchte, aber nicht für andere Programme? Dh für mich Übersetzungen brechen einige Dinge so würde ich git haben möchte immer (egal welche Programmaufrufe es) haben LANG = C und alles andere in meiner Muttersprache. Irgendwelche Ideen?
Droggl
@Droggl Solange Sie LANGin der Bash / Shell / DOS-Sitzung festlegen, in der Sie verwenden git(oder von der aus starten git-gui), wird nur git(oder git-gui) diese bestimmte Einstellung verwendet. Alle anderen Programme erben von den System- / Benutzerumgebungsvariablen.
VonC
4

Führen Sie aus LC_MESSAGES=C git, nicht LC_ALL = C oder LANG = C, und Sie müssen keine Dateien löschen oder umbenennen.

Dieser Befehl ändert die Ausgabe von Git-Nachrichten in Englisch.

Iapetus
quelle
2

GIT verwendet standardmäßig Englisch, wenn die Sprache des Gebietsschemas nicht gefunden werden kann.

Wenn Sie also möchten, dass GIT auf Englisch ist, sabotieren Sie einfach die Sprachdatei, mit der es ausgeführt wird. In meinem Fall lief es immer mit Deutsch (dh: de.msg ).

Wenn ich es gelöscht oder umbenannt habe, wurde standardmäßig Englisch verwendet.

Geben Sie hier die Bildbeschreibung ein

Hier habe ich die Datei umbenannt

Geben Sie hier die Bildbeschreibung ein

Oliver Watkins
quelle
Mit Git für Windows 2.x (64 Bit) ist dies möglich C:\Program Files\Git\mingw64\share\locale\$LANG\LC_MESSAGES\git.mo.
Koraktor
Der Vorteil dieses Ansatzes könnte sein, dass nach einem Update von git die Übersetzung zurück ist (und möglicherweise verbessert wird), sodass Sie erneut entscheiden können, ob Sie sie verwenden oder wieder entfernen möchten.
user905686
Ich habe den Quellcode überprüft, es scheint, dass git kein Englisch unterstützt: github.com/git-l10n/git-po/tree/master/po Auch ich möchte zuerst Englisch vor Chinesisch und Schwedisch verwenden (en_GB: en: zh_HK: zh_CN: zh: sv_SE: sv), git zeigt mir immer noch Chinesisch.
Michael Tsang
Unter Mac OSx mit Git, das über Homebrew installiert wurde, fand ich die Gebietsschemas in /usr/local/Cellar/git/2.21.0/share/locale/.
Magnus W
0

Wie Bengt vorgeschlagen hat: Fügen Sie diese Zeilen zu Ihrem hinzu ~/.bashrcoder ~/.bash_profilezwingen Sie git, alle Nachrichten auf Englisch anzuzeigen: vim ~/.bashrc- für dieses Profil (wenn Sie Benutzer sind ubuntuund dies bearbeiten, gilt dies nur für diesen Benutzer); füge diese Zeilen hinzu:

# Set Git language to English
#alias git='LANG=en_US git'
alias git='LANG=en_GB git'
#you can add also 
LANG=en_GB

und nachdem Sie die Datei geschlossen haben, müssen Sie in Shell schreiben:

source ~/.bashrc 

um neue Einstellungen neu zu laden oder das Terminal zu verlassen und erneut eine Verbindung herzustellen :)

Svetoslav
quelle
Was ist die zusätzliche LANG=en_GBin ~/.bashrctun soll? Definiert das nicht nur die lokale Variable LANG?
user905686
0

Hier ist meine Lösung zu ändern git Sprache folgen beantworten diese und diese

1) nano ~/.bashrc
2) alias git='LANG=en_GB git'zur Datei hinzufügen
2) Datei speichern
4)source ~/.bashrc

Jetzt ändert dein Git schon die Sprache. Allerdings IF nach dem Neustart Terminal und es nicht mehr funktioniert, müssen Sie

4.1) nano ~/.profile
4.2) Hinzufügen source ~/.bashrc
4.3) Speichern der Datei

Es wird source ~/.bashrcausgeführt, wenn Sie das Terminal öffnen

Hoffe es hilft

Phan Van Linh
quelle