如何更改 Git 命令行界面的语言?

Posted

技术标签:

【中文标题】如何更改 Git 命令行界面的语言?【英文标题】:How does one change the language of the command line interface of Git? 【发布时间】:2012-05-24 21:39:44 【问题描述】:

我想在我的 Linux 安装中更改 git 的语言(改为英语),而不更改其他程序的语言,但找不到设置。 怎么做?

【问题讨论】:

您正在寻找更改语言环境。我认为我会将这个问题重新发布给超级用户。 【参考方案1】:

添加这一行为我解决了这个问题: 更新:现在似乎更多组件也需要 Locale。

$ 更多 ~/.bash_profile

导出 LANG=en_US(已过时)

export LANG="en_US.UTF-8"(更新)

【讨论】:

问题是如何仅更改 git 的语言 - 我将其更新为更清晰。 缺少编码,把我的环境搞得一团糟?【参考方案2】:

将这些行添加到您的 ~/.bashrc~/.bash_profile~/.zprofile 以强制 git 以英文显示所有消息:

# Set Git language to English
#alias git='LANG=en_US git'
alias git='LANG=en_GB git'

在某些系统上别名需要覆盖LC_ALL,当设置了环境变量LC_ALL时,它优先于LANG。更多解释请参见UNIX Specification - Environment Variables。

# Set Git language to English
#alias git='LC_ALL=en_US git'
alias git='LC_ALL=en_GB git'

如果您将这些行添加到~/.bashrc,则将在启动新的交互式 shell 时定义别名。如果您将其添加到~/.bash_profile,则登录时将应用别名。

【讨论】:

文件名中有错字(.bash.rc 而不是.bashrc)。您还必须关闭并再次启动 shell 才能执行 .bashrc。我也为此添加了注释。 我在.bashrc 中尝试过,即使重启也是如此。别名工作。只是语言没有改变。 要验证.bashrc 是否成功执行,您可以在文件末尾添加类似echo "This is .bashrc" 的测试。您还可以通过. .bashrc 按需执行它,而无需重新启动终端或整个系统。最后,我建议尝试设置LC_ALL 环境变量而不是LANG,因为第一个具有优先权。 我的.bashrc 一切都很好,真的。如果LC_ALL 具有优先权,那么这就是问题所在,它设置为我的语言。但是我不想更改通用语言设置...我不能为一个程序覆盖它吗? 您可以使用建议的方法设置语言而不会产生副作用,因为这些变量只有在命令需要终止时才有效。通过运行$ LC_ALL="en_US" man 然后$ man 来尝试【参考方案3】:

这是我更改 git 语言的解决方案,请关注答案 this 和 this

1) nano ~/.bashrc 2)将alias git='LANG=en_GB git'添加到文件 2) 保存文件 4)source ~/.bashrc

现在你的 git 已经改变了语言。但是,如果在你重启终端后它不再工作了,你需要

4.1) nano ~/.profile 4.2) 添加source ~/.bashrc 4.3) 保存文件

它会让source ~/.bashrc在你打开终端时运行

希望对你有帮助

【讨论】:

【参考方案4】:

正如 Bengt 建议的那样:将这些行添加到您的 ~/.bashrc~/.bash_profile 以强制 git 以英文显示所有消息: vim ~/.bashrc - 用于此配置文件(如果您是用户 ubuntu 并且您对其进行编辑,它将仅适用于此用户); 添加此行:

# Set Git language to English
#alias git='LANG=en_US git'
alias git='LANG=en_GB git'
#you can add also 
LANG=en_GB

关闭文件后,你需要在 shell 中写入:

source ~/.bashrc 

重新加载新设置或退出终端并再次连接:)

【讨论】:

~/.bashrc 中的额外LANG=en_GB 应该做什么?那不就是定义了局部变量LANG吗?【参考方案5】:

运行LC_MESSAGES=C git,而不是 LC_ALL=C 或 LANG=C,无需删除或重命名文件。

此命令将输出 Git 消息更改为英文。

【讨论】:

【参考方案6】:

注意:从 Git 2.3.1+(2015 年第一季度/第二季度)开始,Git 将尽可能添加 Accept-Language 标头。 见commit f18604bYi EungJun (eungjun-yi)

添加一个Accept-Language 标头,表明用户的首选 由$LANGUAGE$LC_ALL$LC_MESSAGES$LANG 定义的语言。

这让 git 服务器有机会在 用户的首选语言。


你有locale for git gui或other GUIs,但不是命令行,考虑到这是GitSurvey 2010的问题之一

localization of command-line messages (i18n)    258     3.6%    

当然,自 2010 年以来,正如 po/README 所述:

在翻译字符串之前,必须先将它们标记为待翻译。

Git 使用一个国际化接口来包装系统的 gettext library,所以你的 gettext 文档中的大部分建议 (在终端中的 GNU 系统 info gettext 上)适用。

自git 1.7.9+(2012 年 1 月)起生效:

Git 使用gettext 将其最常见的界面消息翻译成用户的语言,如果翻译可用并且区域设置适当。 发行商可以将新的PO 文件放到po/ 中以添加新的翻译。

所以,如果您的更新弄乱了翻译,请检查 gettext 的用途: 例如,参见“Locale Environment Variables”

一个语言环境由几个语言环境类别组成,请参阅方面。当程序查找依赖于语言环境的值时,它会根据以下环境变量按优先级顺序执行此操作:

LANGUAGE
LC_ALL
LC_xxx, according to selected locale category: LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, ...
LANG 

在此查找中忽略值已设置但为空的变量。

LANG 是用于指定语言环境的普通环境变量。作为用户,您通常会设置此变量(除非系统已经在/etc/profile 或类似的初始化文件中设置了其他一些变量)。

LC_CTYPELC_NUMERICLC_TIMELC_COLLATELC_MONETARYLC_MESSAGES 等是旨在覆盖 LANG 并仅影响单个区域设置类别的环境变量。 例如,假设您是西班牙的瑞典用户,并且您希望您的程序根据西班牙语约定处理数字和日期,并且只有消息应该是瑞典语。然后,您可以使用localedef 程序创建一个名为“sv_ES”或“sv_ES.UTF-8”的语言环境。但是更简单的方法是,将LANG变量设置为es_ES.UTF-8,将LC_MESSAGES变量设置为sv_SE.UTF-8;这两种语言环境已经预装在操作系统中。

LC_ALL 是一个覆盖所有这些的环境变量。它通常用于运行特定程序的脚本中。例如,由 GNU autoconf 生成的配置脚本使用 LC_ALL 来确保配置测试不会以依赖于语言环境的方式运行。

不幸的是,有些系统在/etc/profile 或类似的初始化文件中设置了LC_ALL。因此,作为用户,如果要设置 LANG 和可选的其他一些 LC_xxx 变量,则必须取消设置此变量。

【讨论】:

那么翻译从何而来?我问的原因是我在更新之前和之后都有英语的 git,它变成了我的语言,但我不喜欢这样。 @user905686 对不起,我的错误。 Git 通过 gettext 支持语言环境。因此,请检查您的环境变量。我详细说明了要在我编辑的答案中检查哪一个。 如果我只想更改 git 的语言而不更改其他程序的语言怎么办? IE。对我来说,翻译会破坏一些东西,所以我想让 git always (无论哪个程序调用它)都有 LANG=C 和我的母语的所有其他内容。有什么想法吗? @Droggl 只要你在 bash/shell/DOS 会话中设置LANG,你在使用git(或从git-gui启动),只有git(或@987654372) @) 将使用该特定设置。所有其他程序都将继承自系统/用户环境变量。【参考方案7】:

如果你只想有一个英文命令,你可以在命令前写LC_ALL=C,例如:

LC_ALL=C git status

会导致

# On branch master
nothing to commit, working directory clean

C 中使用的语言环境是英语,无需安装其他语言包即可始终使用 (见https://askubuntu.com/a/142814/34298)

要为整个当前 bash 会话更改它,只需输入

LANG=C

例如将其更改为德语输入

LANG=de_DE.UTF-8

【讨论】:

感谢LC_ALL=C 的建议,因为我在语言环境方面遇到了一些问题,LC_ALL="en_US" 最近不再工作了。【参考方案8】:

如果 GIT 找不到 Locale 语言,则默认为英语。

因此,如果您希望 GIT 使用英语,只需破坏它正在运行的语言文件即可。就我而言,它总是以德语运行(即:de.msg)。

如果我删除它或重命名它,那么它默认为英文。

这里我重命名了文件

【讨论】:

对于 Windows 2.x(64 位)的 Git,这将位于 C:\Program Files\Git\mingw64\share\locale\$LANG\LC_MESSAGES\git.mo 这种方法的好处可能是在更新 git 后,翻译会恢复(并且可能会有所改进),因此您可以再次决定是要使用它还是再次删除它。 我查了源码,git好像不支持英文:github.com/git-l10n/git-po/tree/master/po 偶想先用英文,再用中文和瑞典文(en_GB:en:zh_HK:zh_CN:zh: sv_SE:sv), git 仍然给我显示中文。 在 Mac OSx 上,通过 Homebrew 安装了 Git,我在 /usr/local/Cellar/git/2.21.0/share/locale/ 中找到了语言环境。

以上是关于如何更改 Git 命令行界面的语言?的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio git更改账户信息

Go语言命令行利器cobra使用教程

git:通过命令行执行本地 Git 工作流

Ubuntu开机自动进入命令行,如何回到图形化界面?

VMware开机进入了命令行界面更改

如何在命令行界面下设置代理服务器