Homebrew i Git - Niewłaściwy język w wierszu poleceń

43

Mam dziwny problem - kiedy używam gitpolecenia dostarczonego z pakietem narzędzi wiersza poleceń, interfejs wiersza poleceń jest w języku angielskim, tak jak chcę. Jednak wersja zainstalowana przy użyciu Homebrew używa niemieckiego w danych wyjściowych (mieszkam w Niemczech, ale mój język systemowy jest ustawiony na angielski amerykański i komputer został faktycznie zakupiony w Singapurze, jeśli ma to znaczenie).

Wierzę, że to się zmieniło dopiero niedawno. Musiałem oddać komputer Mac do naprawy i zrobiłem to w sklepie niemieckim. Teraz, gdy mam z powrotem komputer, zauważyłem, że dane wyjściowe Gita są w języku niemieckim, nie jestem pewien, czy zrobili coś z ustawieniami systemu, gdy je mieli. O ile mi wiadomo, jest to jedyna aplikacja wiersza polecenia, która używa języka niemieckiego jako języka. Oto dane wyjściowe wygenerowane przez localepolecenie:

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

Chciałbym, aby Git rozmawiał ze mną po angielsku. Wiem, że mogę ustawić LANGitd. Na angielski i to (prawdopodobnie) zadziałałoby, ale chciałbym również zrozumieć, skąd ta zmiana może pochodzić.

Jakieś pomysły?

EDYCJA : aby uczynić rzeczy bardziej interesującymi, używam innego komputera Mac, który dostałem z pracy. Został kupiony w Niemczech, początkowymi ustawieniami językowymi były niemiecki (który zmieniłem na angielski amerykański) i wszystko działa na nim dobrze, tzn. Obie instalacje Git (CLT i Homebrew) używają angielskiego. Informacje o ustawieniach regionalnych z localepolecenia są takie same.

wujek
źródło
Myślę, że mam ten sam problem. Działa na macOS Mojave 10.14 (18A389), Homebrew 1.7.6, wersja git 2.19.0…
Frank Lämmer
2
Tak mi się po prostu przydarzyło uaktualnienie do Mojave; do tej pory działało dobrze. Wszystkie interfejsy OS X w języku angielskim, język C, ale jestem w kraju niemieckojęzycznym, a git mówi do mnie po niemiecku. Tak jak robi git zdecydować jakiego języka używać?
Alexis

Odpowiedzi:

57

Ostatnio zacząłem obserwować to samo zachowanie, szczególnie w przypadku git (i po aktualizacji do MacOS Mojave). Na początku myślałem, że to problem z samym git. Ponownie zainstalowałem git z homebrew bezskutecznie.

Jednak przejście do zakładki „Język i region” w „Ustawieniach” MacOS i usunięcie innych niepotrzebnych języków z listy (uwaga: różnią się one od źródeł wejściowych klawiatury) spowodowało, że git wyświetlił komunikaty wyjściowe poleceń w terminalu w wybranym języku (w moim przypadku angielskim).

W szczególności problem ten wystąpił mi tylko w terminalu macOS (a nie np. W terminalu VSCode).

Anton K
źródło
1
Nie jestem jeszcze w Mojave, ale to naprawiło mój problem. I jak mówisz, terminal VSCode lub Idea był po angielsku, tylko iterm2 po niemiecku. Mam sporo źródeł, w tym niemiecki, ponieważ często piszę w różnych językach i potrzebuję ich znaków specjalnych. Wydaje się (właśnie przetestowane), gdy dodam źródło wejściowe, dodaje również język do listy „Język i region”, co nie jest tak naprawdę konieczne i powoduje problem. Dziwne, że angielski wciąż był na szczycie tej listy, ale w jakiś sposób został zastąpiony przez drugi język, niemiecki. Hmm
wujek
1
Podobnie stało się ze mną po aktualizacji do Mojave. Mój terminal git był w języku angielskim, ale git przez terminal IntelliJ był w języku hiszpańskim (mój drugi język w Language & Reigon). Wyraźnie ustawiłem zmienną środowiskową LANG i to naprawiłem, ponieważ chcę hiszpańskiego w języku i reigon
Sam
@wujek fakt, że nie korzystasz z Mojave, pozwala na możliwość, że nadal może to być problem z najnowszym pakietem git na homebrew. W moim systemie wprowadzono tylko dwie zmiany, po których zauważyłem problem: aktualizacja do Mojave i aktualizacja pakietu git z Homebrew.
Anton K
2
Byłem bardzo zaskoczony widząc git po rosyjsku: D
Artem
3
Usunięcie języka nie jest rozwiązaniem. Ustawiłem LANG = en_US.UTF-8 i nadal jest w języku francuskim.
Walker Rowe
10

Mam ten sam problem. Po aktualizacji homebrew git 2.17.0 -> 2.19.1 stwierdzam, że nowa wersja git zaczyna respektować zmienną env LANG.

Gdyby

LANG="en_US.UTF-8"

lub

LANG=

git użyje angielskiego.

Jeśli np.

LANG="zh_CN.UTF-8"

używaj chińskiego.

Nie czytałem dzienników zatwierdzeń git, ale myślę, że działa zgodnie z przeznaczeniem. Po prostu czuję się trochę dziwnie, widząc komunikaty w języku innym niż angielski w wierszu poleceń git :)

PickBoy
źródło
w rzeczywistości en_ENnie jest prawidłową lokalizacją. Prawidłowe lokalizacje mają kody krajów w ciągu ostatnich 2 znaków, tak, na przykład, en_USi en_UKsą ważne lokalizacje.
Walter Tross
Nie działa dla mnie nawet z wersją git 2.21.0 z homebrew 2.1.6
Nicolas Massart
@WalterTross W rzeczywistości en_UKjest również nieprawidłowy, en_GB(Wielka Brytania) jest poprawna. stackoverflow.com/a/7296292/9534591
ik1ne
Racja, a właściwie poprawiłem już odpowiedź Timothy'ego Siwuli, po dwukrotnym sprawdzeniu. Zawsze trzeba dokładnie sprawdzić w UK vs GB :-(. BTW, to szaleństwo, że GB to kod ISO dla Wielkiej Brytanii, która składa się z Wielkiej Brytanii i Irlandii Północnej: en.wikipedia.org/wiki/ISO_3166-2: GB
Walter Tross,
powinna to być potwierdzona odpowiedź, usunięcie języków z ustawień ma inne skutki.
tsnobip
4

Dodaj to do swojego .bash_profilepliku - podobny błąd występuje w komponencie terminalowym PyCharm na 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=

Po wykonaniu tej czynności musisz ponownie uruchomić system, aby zaczął obowiązywać.

Kredyt trafia do tego postu na blogu

timxor
źródło
3

Z tego co mogę powiedzieć, to raczej problem z gettextem GNU niż problem z Git.

Wygląda na to, że błąd został naprawiony w GNU gettext v0.20 ; ale od tego postu Homebrew niestety zapewnia tylko v0.19.8.1 .


Problem odtworzyłem w następujący sposób:

$ 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
źródło
brew info gettextwydaje się dawać info o kwestiach jak naprawić dodając gettex w drodze, ale nie jestem w stanie powiedzieć, czy mam to zrobić, czy nie ...
Nicolas Massart
0

Miałem ten sam problem z Mojave i Git 2.19, ale właśnie zaktualizowałem Git do wersji 2.21 i działało ono zgodnie z oczekiwaniami.

Juan Maya
źródło
2
Mam problem z git 2.21.0
Walter Tross