Как изменить язык интерфейса командной строки Git?

103

Я хотел бы изменить язык git (на английский) в моей установке Linux, не меняя язык для других программ, и не могу найти настройки. Как это сделать?

user905686
источник
1
Вы хотите сменить регион. Думаю, я бы перепостил этот вопрос суперпользователю.
JosefAssad

Ответы:

145

Добавьте эти строки в свой ~/.bashrcили, ~/.bash_profileчтобы заставить git отображать все сообщения на английском языке:

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

Псевдоним необходимо переопределить LC_ALLв некоторых системах, когда установлена ​​переменная среды LC_ALL, которая имеет приоритет LANG. См. Спецификацию UNIX - Переменные среды для дальнейшего объяснения.

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

Если вы добавили эти строки ~/.bashrcв псевдоним, он будет определен при запуске новой интерактивной оболочки. Если вы добавили его, ~/.bash_profileпсевдоним будет применен при входе в систему.

Bengt
источник
В названии файла ( .bash.rcвместо .bashrc) была опечатка . Вы также должны закрыть и снова запустить оболочку для .bashrcвыполнения. Я также добавил примечание по этому поводу.
Bengt
Пробовал у себя .bashrcдаже с перезапуском. Псевдонимы работают. Просто язык не меняется.
user905686 09
Чтобы убедиться, что .bashrcоперация выполняется успешно, вы можете добавить тест, например, echo "This is .bashrc"в конец файла. Вы также можете выполнить его по требованию без перезапуска терминала или всей системы . .bashrc. Наконец, я бы предложил попробовать установить LC_ALLпеременную среды вместо LANG, поскольку первая имеет приоритет.
Bengt
У меня все нормально .bashrc, правда. Если LC_ALLимеет приоритет, то это будет проблемой, он настроен на мой язык. Но тогда я не хочу менять общую настройку языка ... Разве я не могу ее перезаписать для одной программы?
user905686
1
Вы можете установить язык с помощью предлагаемого метода без побочных эффектов, так как эти переменные существуют только до тех пор, пока команда не завершится. Попробуйте, запустив, $ LC_ALL="en_US" manа затем$ man
Bengt
20

Если вы просто хотите иметь одну команду на английском языке, вы можете просто написать 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
rubo77
источник
Спасибо за LC_ALL=Cпредложение, так как у меня проблемы с LC_ALL="en_US"локалью, в последнее время больше не работало.
user905686
11

Добавление этой строки решило для меня проблему:

$ more ~/.bash_profile
export LANG=en_US
Дональд Дак
источник
2
Вопрос в том, как поменять язык только для git - обновил, чтобы было понятнее.
user905686
6

Примечание: начиная с Git 2.3.1+ (Q1 / Q2 2015), Git по возможности добавит заголовок Accept-Language.
См. Коммит f18604b от Yi EungJun ( eungjun-yi)

Добавьте Accept-Languageзаголовок , который указывает на предпочтительные языки в пользователя определяется $LANGUAGE, $LC_ALL, $LC_MESSAGESи $LANG.

Это дает серверам git возможность отображать удаленные сообщения об ошибках на предпочитаемом пользователем языке.


У вас есть локаль для git gui или других графических интерфейсов ,но не для командной строки, учитывая, что это был один из вопросов GitSurvey 2010

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

Конечно, с 2010 года, как po/READMEописано:

Прежде чем строки можно будет перевести, их сначала нужно пометить для перевода.

Git использует интерфейс интернационализации, который является оболочкой для системной gettextбиблиотеки , поэтому info gettextприменимы большинство советов из вашей документации gettext (в системах GNU в терминале).

Используется с git 1.7.9+ (январь 2012 г.):

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_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, И так далее, переменные окружения , предназначенные для переопределения LANGи затрагивающие только одну категорию локали.
Например, предположим, что вы являетесь шведским пользователем в Испании и хотите, чтобы ваши программы обрабатывали числа и даты в соответствии с испанскими соглашениями, и только сообщения должны быть на шведском языке. Затем вы можете создать локаль с именем ' sv_ES' или ' sv_ES.UTF-8' с помощью localedefпрограммы. Но проще и добиться того же эффекта, установить для LANGпеременной значение es_ES.UTF-8и значение LC_MESSAGESпеременной sv_SE.UTF-8; эти две локали поставляются с предустановленной операционной системой.

LC_ALL- это переменная среды, которая отменяет все это. Обычно он используется в сценариях, запускающих определенные программы. Например, сценарии конфигурации, созданные GNU, autoconfиспользуются, LC_ALLчтобы убедиться, что тесты конфигурации не работают в зависимости от локали.

Некоторые системы, к сожалению, установить LC_ALLв /etc/profileили в аналогичных файлах инициализации. Следовательно, вы, как пользователь, должны отключить эту переменную, если хотите установить LANGи, при необходимости, некоторые другие LC_xxxпеременные.

VonC
источник
Итак, откуда взялась трансляция? Причина, по которой я спросил, заключается в том, что до и после обновления у меня был git на английском языке, он изменился на мой язык, но мне это не нравится.
user905686
@ user905686 извините, моя ошибка. Git поддерживает локаль с помощью gettext. Так что проверьте переменные среды. Я уточняю, какой из них проверить, в отредактированном ответе.
VonC
Что, если я хочу просто изменить язык для git, но не для других программ? Т.е. для меня переводы ломают некоторые вещи, поэтому я хотел бы, чтобы git всегда (независимо от того, какая программа его вызывает) имел LANG = C и все остальное на моем родном языке. Любые идеи?
Droggl
@Droggl Пока вы устанавливаете LANGсеанс bash / shell / DOS, который вы используете git(или запускаете git-guiиз), только git(или git-gui) будет использовать этот конкретный параметр. Все остальные программы будут наследовать от переменных среды системы / пользователя.
VonC
4

Запускать LC_MESSAGES=C git, а не LC_ALL = C или LANG = C, и не нужно удалять или переименовывать файлы.

Эта команда меняет вывод сообщений Git на английский.

япет
источник
2

GIT по умолчанию использует английский, если не может найти язык Locale.

Поэтому, если вы хотите, чтобы GIT был на английском языке, просто саботируйте языковой файл, с которым он работает. В моем случае он всегда работал с немецким языком (т.е. de.msg ).

Если я удалил его или переименовал, по умолчанию он стал английским.

введите описание изображения здесь

Здесь я переименовал файл

введите описание изображения здесь

Оливер Уоткинс
источник
В Git для Windows 2.x (64-разрядная версия) это будет в формате C:\Program Files\Git\mingw64\share\locale\$LANG\LC_MESSAGES\git.mo.
Koraktor
Преимущество этого подхода может заключаться в том, что после обновления git перевод вернется (и, возможно, улучшится), поэтому вы можете снова решить, хотите ли вы его использовать или удалить снова.
user905686
Я проверил исходный код, похоже, что git не поддерживает английский: github.com/git-l10n/git-po/tree/master/po Даже я хочу сначала использовать английский, а не китайский и шведский (en_GB: en: zh_HK: zh_CN: zh: sv_SE: sv), git все еще показывает мне китайский язык.
Майкл Цанг
В Mac OSx с Git, установленным через Homebrew, я нашел локали в /usr/local/Cellar/git/2.21.0/share/locale/.
Magnus W
0

Как предложил Бенгт: добавьте эти строки в свой ~/.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

и после закрытия файла нужно написать в оболочке:

source ~/.bashrc 

чтобы перезагрузить новые настройки или выйти из терминала и снова подключиться :)

Святослав
источник
Что является дополнительным LANG=en_GBв ~/.bashrcдолжен делать? Разве это не просто определение локальной переменной LANG?
user905686
0

Вот мое решение для изменения языка git, ответьте на это и на это

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запускаться всякий раз, когда вы открываете терминал

Надеюсь, это поможет

Фан Ван Линь
источник