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

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

【问题讨论】:

  • 您正在寻找更改语言环境。我认为我会将这个问题重新发布给超级用户。

标签: bash git localization environment-variables locale


【解决方案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 语言的解决方案,请关注答案 thisthis

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 guiother 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/ 中找到了语言环境。
      猜你喜欢
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      相关资源
      最近更新 更多