Homebrew und Git - Falsche Sprache in der Befehlszeile

43

Ich habe ein seltsames Problem - wenn ich den gitBefehl verwende, der mit dem Command Line Tools-Paket geliefert wird, ist die Benutzeroberfläche in der Befehlszeile in Englisch, so wie ich es möchte. Die mit Homebrew installierte Version verwendet jedoch Deutsch in ihrer Ausgabe (ich lebe in Deutschland, aber meine Systemsprache ist auf US-Englisch eingestellt und der Computer wurde tatsächlich in Singapur gekauft, wenn es darauf ankommt).

Ich glaube, das hat sich erst kürzlich geändert. Ich musste meinen Mac zur Reparatur geben und das in einem deutschen Laden. Jetzt, da ich meinen Computer wieder habe, habe ich festgestellt, dass die Ausgabe von Git auf Deutsch ist und nicht sicher ist, ob sie irgendetwas an den Systemeinstellungen vorgenommen haben, während sie es hatten. Soweit ich weiß, ist dies die einzige Befehlszeilenanwendung, die Deutsch als Sprache verwendet. Hier ist die vom localeBefehl erzeugte Ausgabe :

LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

Ich möchte, dass Git mit mir auf Englisch spricht. Ich weiß, dass ich das LANGetc. auf Englisch setzen kann und es würde (wahrscheinlich) funktionieren, aber ich würde auch gerne verstehen, woher diese Änderung kommen könnte.

Irgendwelche Ideen?

EDIT : Um die Sache interessanter zu machen, benutze ich einen anderen Mac, den ich von der Arbeit bekommen habe. Es wurde in Deutschland gekauft, die anfänglichen Spracheinstellungen waren Deutsch (was ich in US-Englisch geändert habe) und alles funktioniert einwandfrei, dh beide Git-Installationen (CLT und Homebrew) verwenden Englisch. Die Gebietsschemainformationen des localeBefehls sind identisch.

wujek
quelle
Ich glaube, ich habe das gleiche Problem. Laufen auf macOS Mojave 10.14 (18A389), Homebrew 1.7.6, Git-Version 2.19.0…
Frank Lämmer
2
Das ist mir gerade passiert, als ich auf Mojave umgestiegen bin. bis jetzt hat es gut funktioniert. Alle OS X-Benutzeroberflächen in Englisch, Gebietsschema C, aber ich bin in einem deutschsprachigen Land und git spricht mit mir auf Deutsch. Also , wie funktioniert git zu entscheiden , welche Sprache zu benutzen?
Alexis

Antworten:

57

Vor kurzem habe ich begonnen, dasselbe Verhalten zu beobachten, insbesondere bei Git (und nach dem Update auf MacOS Mojave). Zuerst dachte ich, dass es ein Problem mit git selbst ist. Also habe ich Git mit Homebrew ohne Erfolg neu installiert.

Das Aufrufen der Registerkarte "Sprache & Region" in den MacOS "Einstellungen" und das Entfernen anderer Sprachen aus der Liste, die Sie nicht benötigen (Hinweis: Diese unterscheiden sich von den Tastatureingabequellen), führte dazu, dass die Befehlsausgabemeldungen als git angezeigt wurden im Terminal in der gewünschten Sprache (in meinem Fall Englisch).

Insbesondere trat dieses Problem nur im macOS-Terminal (und nicht z. B. im VSCode-Terminal) auf.

Anton K
quelle
1
Ich bin noch nicht auf Mojave, aber das hat mein Problem behoben. Und wie Sie sagen, war VSCode oder Idea Terminal auf Englisch, nur iterm2 auf Deutsch. Ich habe ziemlich viele Eingabequellen, einschließlich Deutsch, da ich oft in verschiedenen Sprachen schreibe und deren Sonderzeichen benötige. Wenn ich eine Eingabequelle hinzufüge (gerade getestet), wird der Liste "Sprache & Region" auch eine Sprache hinzugefügt, was nicht unbedingt erforderlich ist und das Problem verursacht. Seltsamerweise stand Englisch immer noch ganz oben auf der Liste, wurde aber irgendwie von der zweiten Sprache, Deutsch, außer Kraft gesetzt. Hmm.
Mittwoch,
1
Ähnliches passierte mir nach dem Update auf Mojave. Mein Terminal-Git war auf Englisch, aber der Git über das IntelliJ-Terminal war auf Spanisch (meine sekundäre Sprache in Language & Reigon). Ich habe meine LANG-Umgebungsvariable explizit festgelegt und das hat sie behoben, da ich Spanisch in Language & Reigon
Sam
@wujek Die Tatsache, dass Sie Mojave nicht verwenden, lässt die Möglichkeit zu, dass es immer noch ein Problem mit dem neuesten Git-Paket auf Homebrew gibt. Auf meinem System wurden nur zwei Änderungen vorgenommen, nach denen ich das Problem bemerkt habe: Aktualisierung auf Mojave und Aktualisierung des Git-Pakets mit Homebrew.
Anton K
1
Ich war so überrascht, Git in russischer Sprache zu sehen: D
Artem
3
Das Löschen einer Sprache ist keine Lösung. Ich habe LANG = en_US.UTF-8 gesetzt und es ist immer noch auf Französisch.
Walker Rowe
10

Ich habe das gleiche Problem. Nach dem Homebrew-Upgrade von Git 2.17.0 -> 2.19.1 stelle ich fest, dass die neue Git-Version die LANG env-Variable zu respektieren beginnt.

Wenn

LANG="en_US.UTF-8"

oder

LANG=

Git wird Englisch verwenden.

Wenn zB

LANG="zh_CN.UTF-8"

Git verwenden Chinesisch.

Ich habe die Commit-Protokolle von git nicht gelesen, aber ich denke, es funktioniert wie beabsichtigt. Fühlen Sie sich einfach ein wenig seltsam, wenn Sie nicht-englische Git-Kommandozeilen-Ausgabenachrichten sehen :)

PickBoy
quelle
ist eigentlich en_ENkein gültiges Gebietsschema. Gültige Gebietsschemas haben Ländercodes als die letzten 2 Zeichen, also z. B. en_USund en_UKsind gültige Gebietsschemas.
Walter Tross
Funktioniert bei mir auch nicht mit Git Version 2.21.0 von Homebrew 2.1.6
Nicolas Massart
@WalterTross Ist eigentlich en_UKauch ungültig, en_GB(Großbritannien) ist das richtige. stackoverflow.com/a/7296292/9534591
ik1ne
Richtig, und in der Tat hatte ich die Antwort von Timothy Siwula bereits richtig festgelegt, nachdem ich sie noch einmal überprüft hatte. Es ist übrigens verrückt, dass GB der ISO-Code für Großbritannien und Nordirland ist: en.wikipedia.org/wiki/ISO_3166-2: GB
Walter Tross
Dies sollte die validierte Antwort sein. Das Entfernen von Sprachen aus den Einstellungen hat andere Auswirkungen.
tsnobip vor
4

Fügen Sie dies zu Ihrer .bash_profileDatei hinzu - es gibt einen ähnlichen Fehler mit der Terminalkomponente von PyCharm unter macOS mojave (10.14).

# locale settings, string mac/chinese/pycharm/git bug
# https://coderwall.com/p/ehvc8w/set-lang-variable-in-osx-terminal-app
export LANG="en_GB.UTF-8"
export LC_COLLATE="en_GB.UTF-8"
export LC_CTYPE="en_GB.UTF-8"
export LC_MESSAGES="en_GB.UTF-8"
export LC_MONETARY="en_GB.UTF-8"
export LC_NUMERIC="en_GB.UTF-8"
export LC_TIME="en_GB.UTF-8"
export LC_ALL=

Danach müssen Sie Ihr System neu starten, damit es wirksam wird.

Gutschrift geht an diesen Blog-Beitrag

Tim Siwula
quelle
3

Soweit ich weiß, handelt es sich eher um ein Problem mit GNU gettext als um ein Problem mit Git.

Es sieht so aus, als ob der Fehler in GNU gettext v0.20 behoben wurde . Ab diesem Posting bietet Homebrew leider nur die Version 0.19.8.1 an .


Ich habe das Problem wie folgt reproduziert:

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.4
BuildVersion:   18E226
$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
$ defaults read -g AppleLanguages
(
    "en-JP",
    "ja-JP",
    "sv-JP"
)
$ brew info gettext
gettext: stable 0.19.8.1 (bottled) [keg-only]
GNU internationalization (i18n) and localization (l10n) library
https://www.gnu.org/software/gettext/
/usr/local/Cellar/gettext/0.19.8.1 (1,934 files, 17.0MB)
  Poured from bottle on 2016-06-24 at 02:05:52
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/gettext.rb
...
$ /usr/local/Cellar/gettext/0.19.8.1/bin/msgcat --version
msgcat (GNU gettext-tools) 0.19.8.1
Copyright (c) 2001-2016 Free Software Foundation, Inc.
Licens GPLv3+: GNU GPL version 3 eller senare <http://gnu.org/licenses/gpl.html>
Detta program "ar fri programvara.  Du kan modifiera och distribuera den.
Det finns inte NAGON SOM HELST GARANTI, till den grad som lagen tillater.
Skrivet av Bruno Haible.
$ sudo filebyproc.d
CPU     ID                    FUNCTION:NAME
...
  2    957              open_nocancel:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/bin
  2    957              open_nocancel:entry msgcat /etc/localtime
  2    957              open_nocancel:entry msgcat /var/db/timezone/zoneinfo/posixrules
  2    957              open_nocancel:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/locale.alias
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/en_JP/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/en/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja_JP.eucJP/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja_JP.eucjp/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja_JP/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja.eucJP/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja.eucjp/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja/LC_MESSAGES/gettext-tools.mo
  3    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/sv_JP/LC_MESSAGES/gettext-tools.mo
  3    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/sv/LC_MESSAGES/gettext-tools.mo
execjosh
quelle
Das brew info gettextscheint Informationen darüber zu geben, wie man Probleme behebt, indem man gettex in path hinzufügt, aber ich kann nicht sagen, ob ich das tun soll oder nicht ...
Nicolas Massart
0

Ich hatte das gleiche Problem mit Mojave und Git 2.19, aber ich habe gerade das Git auf 2.21 aktualisiert und es hat wieder wie erwartet funktioniert.

Juan Maya
quelle
2
Ich habe das Problem mit Git 2.21.0
Walter Tross