如何更改 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_CTYPE
、LC_NUMERIC
、LC_TIME
、LC_COLLATE
、LC_MONETARY
、LC_MESSAGES
等是旨在覆盖LANG
并仅影响单个区域设置类别的环境变量。 例如,假设您是西班牙的瑞典用户,并且您希望您的程序根据西班牙语约定处理数字和日期,并且只有消息应该是瑞典语。然后,您可以使用localedef
程序创建一个名为“sv_ES
”或“sv_ES.UTF-8
”的语言环境。但是更简单的方法是,将LANG
变量设置为es_ES.UTF-8
,将LC_MESSAGES
变量设置为sv_SE.UTF-8
;这两种语言环境已经预装在操作系统中。
LC_ALL
是一个覆盖所有这些的环境变量。它通常用于运行特定程序的脚本中。例如,由 GNUautoconf
生成的配置脚本使用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 命令行界面的语言?的主要内容,如果未能解决你的问题,请参考以下文章