Homebrew і Git - неправильна мова в командному рядку


43

У мене є дивна проблема - коли я використовую 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=

Мені б хотілося, щоб Гіт розмовляв зі мною англійською мовою. Я знаю, що я можу встановити і LANGт.д. на англійську, і це (мабуть) спрацювало б, але я також хотів би зрозуміти, звідки ця зміна може відбуватися.

Будь-які ідеї?

EDIT : щоб зробити речі цікавішими, я використовую інший Mac, який отримав із роботи. Його купували в Німеччині, початкові мовні настройки були німецькою (яку я змінив на американську англійську), і на ній все працює добре, тобто обидві установки Git (CLT та Homebrew) використовують англійську. Інформація про місцевості в localeкоманді однакова.


Я думаю, що у мене те саме питання. Працює на macOS Mojave 10.14 (18A389), Homebrew 1.7.6, git версія 2.19.0…
Frank Lämmer

2
Це саме сталося зі мною, коли я перейшов на Мохаве; до цього часу це працювало чудово. Всі інтерфейси OS X англійською, мовою C, але я перебуваю в німецькомовній країні і git розмовляє зі мною німецькою мовою. Так як же мерзотник вирішити , яка мова використовувати?
alexis

Відповіді:


57

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

Однак перехід на вкладку "Мова та регіон" на MacOS "Налаштування" та видалення інших мов зі списку, який вам не потрібен (зверніть увагу: вони відрізняються від джерел введення з клавіатури) призвели до того, що git відображає повідомлення командного виводу в терміналі потрібною мовою (в моєму випадку - англійською).

Примітно, ця проблема сталася зі мною лише в терміналі macOS (а не, наприклад, терміналі VSCode).


1
Я ще не в Mojave, але це вирішило мою проблему. І як ви кажете, VSCode або Idea-термінал був англійською мовою, просто iterm2 була німецькою. У мене є досить багато джерел введення, включаючи німецьку, оскільки я часто пишу різними мовами і потребую своїх спеціальних символів. Здається (щойно перевірено), коли я додаю вхідне джерело, воно також додає мову до списку "Мова та регіон", що насправді не є необхідним і викликає проблему. Як не дивно, англійська мова все ще опинилася в цьому списку, але якось перекрита другою мовою - німецькою. Хм.
wujek

1
Схожа річ трапилася і зі мною після оновлення до Mojave. Мій термінал git був англійською мовою, але git через термінал IntelliJ був іспанською мовою (мою вторинну мову - Мова та Рейгон). Я чітко встановив свою змінну середовища LANG і це виправив, тому що я хочу іспанською мовою та Reigon
Сем

@wujek той факт, що ви не використовуєте Mojave, передбачає можливість, що це все-таки може бути проблемою з останнім пакетом git на домашній мові. У моїй системі було внесено лише дві зміни, після яких я помітив проблему: оновлення до Mojave та оновлення пакета git з домашньою мовою.
Антон К

2
Я був так здивований, побачивши git російською мовою: D
Артем

3
Видалення мови не є рішенням. Я встановив LANG = en_US.UTF-8, і це все ще французькою мовою.
Уокер Роу

10

У мене те саме питання. Після оновлення homebrew git 2.17.0 -> 2.19.1 я виявляю, що нова версія git починає поважати змінну LANG env.

Якщо

LANG="en_US.UTF-8"

або

LANG=

git буде використовувати англійську.

Якщо, наприклад,

LANG="zh_CN.UTF-8"

git використання китайської.

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


насправді en_ENне є коректною локальною службою. Допустимі локалі мають коди країн , як останні 2 символи, так, наприклад, en_USі en_UKє дійсними локалі.
Вальтер Трос

Не працює для мене навіть з git версією 2.21.0 від домашньої версії 2.1.6
Nicolas Massart

@WalterTross Насправді en_UKтакож недійсний, en_GB(Великобританія) - правильний. stackoverflow.com/a/7296292/9534591
ik1ne

Правильно, а насправді я вже правильно зафіксував відповідь Тимофія Сівули після повторної перевірки. Завжди потрібно двічі перевірити з Великобританією проти GB :-(. BTW, божевільно, що GB - це ISO-код для Великобританії, який складається з Великобританії та Північної Ірландії: en.wikipedia.org/wiki/ISO_3166-2: GB
Вальтер Трос

це має бути підтвердженою відповіддю, видалення мов із налаштувань має інші наслідки.
tsnobip

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

brew info gettext, Здається, дає Infos про те , як виправити питання , додавши gettex в дорозі, але я не можу сказати , якщо я повинен робити це чи ні ...
Ніколя Массарт


0

У мене була та сама проблема з Mojave та Git 2.19, але я просто оновив Git до 2.21, і він знову працював так, як очікувалося.


2
У мене проблеми з git 2.21.0
Walter Tross
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.