Доморощенный и Git - Неправильный язык в командной строке

42

У меня странная проблема - когда я использую gitкоманду, которая входит в пакет инструментов командной строки, интерфейс в командной строке на английском языке, как я хочу, чтобы это было. Тем не менее, версия, установленная с использованием Homebrew, использует в выводе немецкий язык (я живу в Германии, но мой системный язык установлен на американский английский, и компьютер, если это имеет значение, был фактически куплен в Сингапуре).

Я считаю, что это изменилось только недавно. Я должен был отдать свой Mac на ремонт и сделал это в немецком магазине. Теперь, когда я вернул свой компьютер, я заметил, что вывод Git на немецком языке, не уверен, что они что-то сделали с настройками системы, пока они у него были. Насколько я знаю, это единственное приложение командной строки, которое использует немецкий в качестве языка. Вот вывод, сгенерированный localeкомандой:

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

Я хотел бы, чтобы Git говорил со мной по-английски. Я знаю, что могу установить и LANGт. Д. На английский, и это (вероятно) сработает, но я также хотел бы понять, откуда может произойти это изменение.

Есть идеи?

РЕДАКТИРОВАТЬ : чтобы сделать вещи более интересными, я использую другой Mac, который я получил с работы. Он был куплен в Германии, первоначальные настройки языка были немецкими (которые я изменил на американский английский), и на нем все отлично работает, то есть в обеих установках Git (CLT и Homebrew) используется английский. Информация о локали из localeкоманды одинакова.

Вуек
источник
Я думаю, что у меня та же проблема. Работает на macOS Mojave 10.14 (18A389), Homebrew 1.7.6, git версия 2.19.0…
Фрэнк Ламмер,
2
Это просто случилось со мной , когда я повышен до Мохава; до сих пор все работало нормально. Все интерфейсы OS X на английском языке, язык C, но я нахожусь в немецко-говорящей стране, и git говорит со мной на немецком языке. Так как же git решает, какой язык использовать?
Алексис

Ответы:

56

Недавно я начал наблюдать такое же поведение, особенно с git (и после обновления до MacOS Mojave). Сначала я подумал, что это проблема самого git. Итак, я переустановил git с homebrew безрезультатно.

Однако переход на вкладку «Язык и регион» в «Настройках» MacOS и удаление других языков из списка, который вам не нужен (примечание: они отличаются от источников ввода с клавиатуры), привели к тому, что git отображал сообщения вывода команды в терминале на желаемом языке (в моем случае, английском).

Примечательно, что эта проблема возникла у меня только в терминале macOS (а не, например, в терминале VSCode).

Антон К
источник
1
Я еще не в Мохаве, но это исправило мою проблему. И, как вы говорите, терминал VSCode или Idea был на английском языке, просто iterm2 был на немецком. У меня есть немало источников ввода, включая немецкий, так как я часто пишу на разных языках и нуждаюсь в их специальных символах. Кажется (только что протестировано), когда я добавляю источник ввода, он также добавляет язык в список «Язык и регион», который не является действительно необходимым и вызывает проблему. Как ни странно, английский все еще был в этом списке, но каким-то образом переопределен вторым языком, немецким. Хм.
Вуджек
1
Подобная вещь произошла со мной после обновления до Мохаве. Мой Git в терминале был на английском языке, но Git через терминал IntelliJ был на испанском (мой дополнительный язык в Language & Reigon). Я явно установил переменную среды LANG, и это исправило ее, потому что я хочу испанский язык в Language & Reigon
Сэм,
@wujek тот факт, что вы не используете Mojave, позволяет предположить, что это все еще может быть проблемой с последним пакетом git на homebrew. В моей системе было сделано только два изменения, после которых я заметил проблему: обновление до Mojave и обновление пакета git с помощью homebrew.
Антон К
1
Я был так удивлен, увидев мерзавца на русском языке: D
Артем
3
Удаление языка не является решением. Я установил LANG = en_US.UTF-8, и он все еще на французском языке.
Уокер Роу
9

У меня та же проблема. После домашнего обновления git 2.17.0 -> 2.19.1 я обнаружил, что новая версия git начинает учитывать переменную LANG env.

Если

LANG="en_US.UTF-8"

или же

LANG=

Git будет использовать английский.

Если, например,

LANG="zh_CN.UTF-8"

мерзавец использовать китайский.

Я не читал журналы коммитов в git, но думаю, что он работает как задумано. Просто немного странно видеть неанглийские выходные сообщения командной строки git :)

PickBoy
источник
на самом деле en_ENне является допустимой локалью. Допустимые локали имеют коды стран в качестве последних 2 символов, например, en_USи en_UKявляются действительными локалями.
Уолтер Тросс
У меня не работает даже с git версии 2.21.0 от homebrew 2.1.6
Николас Массарт
@WalterTross На самом деле en_UKтакже недействительным, en_GB(Великобритания) является правильным. stackoverflow.com/a/7296292/9534591
ik1ne
Правильно, и на самом деле я уже исправил ответ Тимоти Сивулы правильно, после двойной проверки. Всегда нужно перепроверить с Великобританией против ГБ :-(. Кстати, безумие, что ГБ - это код ISO для Великобритании, которая состоит из Великобритании и Северной Ирландии: en.wikipedia.org/wiki/ISO_3166-2: GB
Уолтер Тросс
4

Добавьте это в свой .bash_profileфайл - есть похожая ошибка с терминальным компонентом PyCharm в 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=

После этого вам нужно будет перезагрузить систему, чтобы она вступила в силу.

Кредит переходит к этому сообщению в блоге

Тимоти Сивула
источник
3

Из того, что я могу сказать, это проблема с GNU gettext, а не проблема с Git.

Похоже, ошибка была исправлена ​​в GNU gettext v0.20 ; но, на момент публикации, Homebrew, к сожалению, предоставляет только v0.19.8.1 .


Я воспроизвел проблему следующим образом:

$ 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
источник
brew info gettext, кажется, дает Infos о том , как устранить проблемы путем добавления gettex в пути, но я не могу сказать , если я должен делать это или нет ...
Николас Массарт
0

У меня была та же проблема с Mojave и Git 2.19, но я просто обновил Git до 2.21, и он снова заработал, как и ожидалось.

Хуан Майя
источник
2
У меня проблема с git 2.21.0
Уолтер Тросс