Homebrew和Git-命令行上的语言错误


43

我有一个奇怪的问题-当我使用“ git命令行工具”软件包附带的命令时,命令行上的界面是英文,就像我想要的那样。但是,使用Homebrew安装的版本在其输出中使用德语(我住在德国,但是我的系统语言设置为美国英语,如果需要,实际上是在新加坡购买的计算机)。

我相信这只是最近才改变。我必须将Mac维修,并在一家德国商店进行维修。现在,我已经将计算机放回原处,我注意到Git的输出是德语的,不知道在使用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用英语和我说话。我知道我可以将LANGetc. 设置为英语,这样(可能)可以工作,但是我也想了解这种变化可能来自何处。

有任何想法吗?

编辑:为了使事情变得更有趣,我使用了从工作中获得的另一台Mac。它是在德国购买的,初始语言设置为德语(我改为美国英语),并且一切正常,例如,Git安装程序(CLT和Homebrew)都使用英语。locale命令中的语言环境信息是相同的。


我想我遇到了同样的问题。在macOS Mojave 10.14(18A389),Homebrew 1.7.6,git版本2.19.0上运行…
FrankLämmer18

2
当我升级到莫哈韦沙漠时,这只是发生在我身上。到现在为止一切正常。所有的OS X界面都使用英语,C语言环境,但是我在说德语的国家,而git正在用德语和我聊天。那么,如何 git的决定使用什么语言?
亚历克西斯

Answers:


57

最近,我开始观察到相同的行为,尤其是在git中(以及更新到MacOS Mojave之后)。起初,我认为这与git本身有关。因此,我已经用自制软件重新安装了git,但无济于事。

但是,转到MacOS“设置”中的“语言和区域”选项卡,并从列表中删除不需要的其他语言(请注意:这些语言与键盘输入源不同)会导致git显示命令输出消息在终端以所需的语言(在我的情况下为英语)。

值得注意的是,这个问题仅在macOS终端(而不是VSCode的终端)中出现。


1
我尚未使用Mojave,但这解决了我的问题。正如您所说,VSCode或Idea终端是英语,而iterm2是德语。我确实有很多输入源,包括德语,因为我经常用不同的语言书写,并且需要使用特殊字符。似乎(经过测试),当我添加输入源时,它还在“语言和地区”列表中添加了一种语言,这并不是真正必要的,并且会引起问题。奇怪的是,英语仍然排在第一位,但以某种方式被第二种语言德语所取代。嗯
wujek

1
更新到Mojave之后,我发生了类似的事情。我的终端git是英语,但通过IntelliJ终端的git是西班牙语(我的第二语言是Language&Reigon)。我明确地把我的LANG环境变量,而该固定它,因为我在语言和Reigon希望西班牙
萨姆

@wujek您没有使用Mojave的事实使您有可能使用自制软件上的最新git包仍然存在问题。在我的系统上,仅进行了两项更改,之后我注意到了这个问题:更新为Mojave并使用自制软件升级git软件包。
安东·K

2
我很惊讶地看到git俄语:D
Artem

3
删除语言不是解决方案。我设置了LANG = en_US.UTF-8,它仍然是法语。
Walker Rowe

10

我有同样的问题。自制升级git 2.17.0-> 2.19.1之后,我发现新的git版本开始尊重LANG env变量。

如果

LANG="en_US.UTF-8"

要么

LANG=

git将使用英语。

如果,例如

LANG="zh_CN.UTF-8"

git使用中文。

我尚未阅读git的提交日志,但我认为它按预期工作。看到非英语git命令行输出消息有点感到奇怪:)


实际上en_EN不是有效的语言环境。有效的语言环境将国家代码作为最后2个字符,例如,en_USen_UK是有效的语言环境。
Walter Tross

即使使用自制软件2.1.6的git版本2.21.0,也对我不起作用
Nicolas Massart,

@WalterTross实际上en_UK也是无效的,en_GB(英国)是正确的。stackoverflow.com/a/7296292/9534591
ik1ne

是的,事实上,经过仔细检查,我已经正确地修正了蒂莫西·西乌拉(Timothy Siwula)的答案。人们总是要仔细检查一下英国与GB :-(.。顺便说一句,GB是包含大不列颠及北爱尔兰的英国的ISO代码,这很疯狂:en.wikipedia.org/wiki/ISO_3166-2: GB
Walter Tross,

这应该是经过验证的答案,从设置中删除语言还有其他影响。
tsnobip

4

将其添加到.bash_profile文件中-macOS mojave(10.14)上的PyCharm的终端组件存在类似的错误。

# 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似乎在路径中增加gettex提供有关如何解决问题的相关信息,但我不能够告诉我是否应该这样做或不...
尼古拉Massart的


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.