【发布时间】:2012-05-24 21:39:44
【问题描述】:
我想在我的 Linux 安装中更改 git 的语言(改为英语),而不更改其他程序的语言,但找不到设置。 怎么做?
【问题讨论】:
-
您正在寻找更改语言环境。我认为我会将这个问题重新发布给超级用户。
标签: bash git localization environment-variables locale
我想在我的 Linux 安装中更改 git 的语言(改为英语),而不更改其他程序的语言,但找不到设置。 怎么做?
【问题讨论】:
标签: bash git localization environment-variables locale
添加这一行为我解决了这个问题: 更新:现在似乎更多组件也需要 Locale。
$ 更多 ~/.bash_profile
导出 LANG=en_US(已过时)
export LANG="en_US.UTF-8"(更新)
【讨论】:
将这些行添加到您的 ~/.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 来尝试
正如 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吗?
运行LC_MESSAGES=C git,而不是 LC_ALL=C 或 LANG=C,无需删除或重命名文件。
此命令将输出 Git 消息更改为英文。
【讨论】:
注意:从 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 使用一个国际化接口来包装系统的
gettextlibrary,所以你的 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变量,则必须取消设置此变量。
【讨论】:
LANG,你在使用git(或从git-gui启动),只有git(或@987654372) @) 将使用该特定设置。所有其他程序都将继承自系统/用户环境变量。
如果你只想有一个英文命令,你可以在命令前写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" 最近不再工作了。
如果 GIT 找不到 Locale 语言,则默认为英语。
因此,如果您希望 GIT 使用英语,只需破坏它正在运行的语言文件即可。就我而言,它总是以德语运行(即:de.msg)。
如果我删除它或重命名它,那么它默认为英文。
这里我重命名了文件
【讨论】:
C:\Program Files\Git\mingw64\share\locale\$LANG\LC_MESSAGES\git.mo。
/usr/local/Cellar/git/2.21.0/share/locale/ 中找到了语言环境。