Як змінюється мова інтерфейсу командного рядка Git?


103

Я хотів би змінити мову git (на англійську) у моїй установці Linux без зміни мови для інших програм і не зміг знайти налаштування. Як це зробити?


1
Ви хочете змінити місцевість. Я б переписав це питання на суперпоширений, я думаю.
ЙозефАссад

Відповіді:


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псевдоніму, буде застосовано під час входу.


У назві файлу ( .bash.rcзамість .bashrc) була написана помилка друку . Вам також потрібно закрити і запустити оболонку заново для .bashrcвиконання. Я також додав до цього записку.
Бенгт

Я спробував це .bashrcнавіть при перезапуску. Псевдоніми працюють. Це мова не змінюється.
user905686

Щоб переконатися, що виконання .bashrcвиконується успішно, ви можете додати тест, як echo "This is .bashrc"у кінці файлу. Ви також можете його виконати на вимогу без перезавантаження терміналу або всієї системи . .bashrc. Нарешті, я б запропонував спробувати встановити LC_ALLзмінну середовища замість LANG, оскільки перша має перевагу.
Бенгт

З моїм .bashrc, справді, все добре . Якщо LC_ALLбуде пріоритет, то це буде проблема, вона встановлена ​​на моїй мові. Але тоді я не хочу змінювати загальні параметри мови ... Не можу я замінити його для однієї програми?
користувач905686

1
Ви можете встановити мову за допомогою запропонованого методу без побічних ефектів, оскільки ці змінні живуть лише до тих пір, поки команда потребує завершення. Спробуйте, запустивши, $ LC_ALL="en_US" manа потім$ man
Бенгт

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

Щоб змінити його, наприклад, на німецький enter

LANG=de_DE.UTF-8

Дякую за LC_ALL=Cпропозицію, оскільки у мене є деякі проблеми з локальною LC_ALL="en_US"функцією, останнім часом я не працював.
користувач905686

11

Додавання цього рядка вирішило проблему для мене:

$ more ~/.bash_profile
export LANG=en_US

2
Питання в тому, як змінити мову лише на git - я оновив її, щоб було більш зрозуміло.
користувач905686

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бібліотеку системи , тому більшість порад у вашій документації gettext (щодо систем GNU info gettextв терміналі) застосовується.

Діє з 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- це змінна середовище, яка переосмислює все це. Зазвичай він використовується в сценаріях, які виконують певні програми. Наприклад, конфігуруйте сценарії, створені при autoconfвикористанні GNULC_ALL , щоб переконатися , що тести конфігурації не працюють в локалі залежні шляху.

Деякі системи, на жаль, встановити LC_ALLв /etc/profileабо в аналогічних файлах ініціалізації. Таким чином, як користувач, вам доведеться скинути цю змінну, якщо ви хочете встановити LANGі необов'язково деякі інші LC_xxxзмінні.


То звідки береться переклад? Причина, чому я запитав, - це те, що я мав англійською мовою до і після оновлення, вона змінилася на мою мову, але мені це не подобається.
користувач905686

@ 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 за замовчуванням англійською мовою, якщо він не може знайти мову мови.

Тож якщо ви хочете, щоб GIT був англійською мовою, просто саботуйте мовний файл, на якому він працює. У моєму випадку він завжди працював з німецькою мовою (тобто: de.msg ).

Якщо я видалив його або перейменував його, то він за замовчуванням перейшов на англійську мову.

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

Тут я перейменував файл

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


З Git для Windows 2.x (64 біт) це буде в C:\Program Files\Git\mingw64\share\locale\$LANG\LC_MESSAGES\git.mo.
Корактор

Перевага такого підходу може полягати в тому, що після оновлення git переклад повернеться (і, можливо, буде покращено), тож ви зможете знову вирішити, чи бажаєте ви його використовувати чи видалити його знову.
користувач905686

Я перевірив вихідний код, схоже, що 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/.
Магнус Ш

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?
користувач905686

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

Сподіваюся, це допоможе

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.