如何更改 Git 命令行接口的语言?

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

73687 次浏览

注意: 由于 Git 2.3.1 + (Q1/Q22015) ,Git 将尽可能添加 Accept-Language 头。
参见 提交 f18604b by < a href = “ https://github.com/EungJun-Yi”rel = “ nofollow noReferrer”> Yi EungJun (eungjun-yi)

添加一个指示用户首选项的 Accept-Language头 由 $LANGUAGE$LC_ALL$LC_MESSAGES$LANG定义的语言。

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


你有 Git gui 的地点或者 其他 GUI但是对于命令行,考虑到这是 GitSurvey 2010的一个问题

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

当然,正如 翻译: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校所描述的,自2010年以来:

在字符串可以被翻译之前,它们首先必须被标记为翻译。

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

Git 1.7.9 + (2012年1月)起实施:

Git 使用 gettext将最常见的接口消息翻译成用户语言,如果翻译是可用的,并且语言环境设置为
分发服务器可以在 po/中删除新的 PO文件以添加新的翻译。

因此,如果你的更新把翻译搞砸了,检查一下 gettext使用了什么:
比如说“ 语言环境变量

区域设置由几个区域设置类别组成,请参见方面。当程序查找区域设置相关的值时,它根据以下环境变量按优先级顺序执行:

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更简单,并且达到了同样的效果; 这两个地区已经预先安装在操作系统中。

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

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


早些时候,HTTP 传输客户机学会了通过发送 Accept-Language HTTP 头来告诉服务器端他们所在的地区,但是这只是针对一些请求而不是其他请求。
Git 2.38(Q32022)修复了这个问题:

承认吧(2022年7月11日) by 李林超(Cactusinhand)
(由 朱尼奥 · C · 哈马诺 gitster提交4b8cdff合并,2022年7月19日)

remote-curl : 将 Accept-Language 头发送到服务器

帮助者: Junio C Hamano
签名: 李林超

Git 服务器端接受 Accept-Language头的能力是在 F18604b中引入的(“ http: 如果可能的话添加 Accept-Language 头”,2015-01-28,Git v2.4.0-rc0—— 合并) ,但是这只在传输的非常早期阶段使用,即 HTTP GET请求来发现引用。
对于其他阶段,比如智能 HTTP 中的 POST请求,服务器不知道客户机使用哪种语言。

教 git 客户机学习最终用户首选的语言,并将 accept-language头文件丢到服务器端。
一旦服务器得到这个头,它就能够用最终用户理解的语言与他们交谈。
这对于许多不说英语的人来说是非常有帮助的。

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

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

在某些系统上,当设置了环境变量 LC_ALL(优先于 LANG)时,别名需要覆盖 LC_ALL。请参阅 UNIX 规范-环境变量以获得进一步的解释。

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

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

如果你只想使用一个英文命令,你可以在命令之前写 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

如果找不到语言环境语言,GIT 默认为英语。

因此,如果您希望 GIT 是英文的,只需破坏它正在运行的语言文件即可。在我的情况下,它总是运行与德国(即: 味精)。

如果我删除它或重命名它,然后它默认为英语。

enter image description here

在这里,我重命名了文件

enter image description here

运行 LC_MESSAGES=C git,而不是 LC _ ALL = C 或 LANG = C,不需要删除或重命名文件。

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

添加这一行为我解决了问题: 更新: 现在似乎更多的组件也需要语言环境。

$more ~/. bash _ profile

输出 LANG = en _ US (过时)

Export LANG = “ en _ US. UTF-8”(更新)

正如本特所建议的: 将这些行添加到您的 ~/.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

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

这里是我的解决方案,改变 git 语言跟随答案 这个这个

1) nano ~/.bashrc
2)将 alias git='LANG=en_GB git'加入档案
2)保存档案
4) source ~/.bashrc

现在你的饭桶已经改变了语言。但是,如果在你重新启动终端之后就不工作了,你还需要吗

4.1) nano ~/.profile
4.2)加入 source ~/.bashrc
4.3)保存文件 < br/>

它会使 source ~/.bashrc运行每当你打开终端

希望能有帮助