Jak zmienić język interfejsu wiersza poleceń w Git?

103

Chciałbym zmienić język git (na angielski) w mojej instalacji Linuksa bez zmiany języka dla innych programów i nie mogłem znaleźć ustawień. Jak to zrobić?

user905686
źródło
1
Chcesz zmienić lokalizację. Myślę, że ponownie opublikowałbym to pytanie na superużytkowniku.
JosefAssad

Odpowiedzi:

145

Dodaj te linie do swojego ~/.bashrclub, ~/.bash_profileaby wymusić na git wyświetlanie wszystkich wiadomości w języku angielskim:

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

Alias ​​musi zostać zastąpiony LC_ALLw niektórych systemach, gdy LC_ALLustawiona jest zmienna środowiskowa , która ma pierwszeństwo przed LANG. Więcej informacji można znaleźć w specyfikacji UNIX - zmienne środowiskowe .

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

Jeśli dodałeś te linie do ~/.bashrcaliasu, zostanie on zdefiniowany, gdy zostanie uruchomiona nowa interaktywna powłoka. W przypadku, gdy dodałeś go do ~/.bash_profilealiasu, zostanie zastosowany podczas logowania.

Bengt
źródło
W nazwie pliku wystąpiła literówka ( .bash.rczamiast .bashrc). Musisz także zamknąć i ponownie uruchomić powłokę, aby program .bashrczostał wykonany. Dodałem też uwagę na ten temat.
Bengt
Próbowałem tego .bashrcnawet przy ponownym uruchomieniu. Aliasy działają. Po prostu język się nie zmienia.
user905686
Aby sprawdzić, czy program .bashrczostanie wykonany pomyślnie, możesz dodać test taki jak echo "This is .bashrc"na końcu pliku. Możesz również zlecić wykonanie go na żądanie bez konieczności ponownego uruchamiania terminala lub całego systemu przez . .bashrc. Na koniec sugerowałbym próbę ustawienia LC_ALLzmiennej środowiskowej zamiast LANG, ponieważ pierwsza z nich ma pierwszeństwo.
Bengt,
U mnie wszystko w porządku .bashrc. Jeśli LC_ALLma pierwszeństwo, to będzie problem, jest ustawiony na mój język. Ale wtedy nie chcę zmieniać ogólnego ustawienia języka ... Czy nie mogę go nadpisać dla jednego programu?
user905686
1
Możesz ustawić język za pomocą sugerowanej metody bez skutków ubocznych, ponieważ te zmienne działają tylko tak długo, jak długo trwa zakończenie polecenia. Spróbuj, biegając, $ LC_ALL="en_US" mana potem$ man
Bengt,
20

Jeśli chcesz mieć tylko jedno polecenie w języku angielskim, możesz po prostu napisać LC_ALL=Cprzed poleceniem, na przykład:

LC_ALL=C git status

spowoduje

# On branch master
nothing to commit, working directory clean

Ustawienia regionalne są używane w Cjęzyku angielskim i są zawsze dostępne bez instalowania dodatkowych pakietów językowych
(patrz https://askubuntu.com/a/142814/34298 )

Aby zmienić to dla całej bieżącej sesji basha, po prostu wprowadź

LANG=C

Aby zmienić go na przykład na niemiecki wpisz

LANG=de_DE.UTF-8
rubo77
źródło
Dzięki za LC_ALL=Csugestię, ponieważ mam pewne problemy z lokalizacją, LC_ALL="en_US"ostatnio już nie działało.
user905686
11

Dodanie tej linii rozwiązało problem dla mnie:

$ more ~/.bash_profile
export LANG=en_US
Kaczor Donald
źródło
2
Pytanie brzmi, jak zmienić język tylko dla gita - zaktualizowałem go, aby był bardziej przejrzysty.
user905686
6

Uwaga: od Git 2.3.1+ (Q1 / Q2 2015), Git doda nagłówek Accept-Language, jeśli to możliwe.
Zobacz commit f18604b autorstwa Yi EungJun ( eungjun-yi)

Dodać Accept-Languagenagłówek, który wskazuje preferowane języki użytkownika określa $LANGUAGE, $LC_ALL, $LC_MESSAGESi $LANG.

Daje to serwerom git szansę na wyświetlanie zdalnych komunikatów o błędach w preferowanym języku użytkownika.


Masz ustawienia regionalne dla git gui lub innych GUI ,ale nie dla wiersza poleceń, biorąc pod uwagę, że było to jedno z pytań GitSurvey 2010

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

Oczywiście od 2010 roku, jak po/READMEopisuje:

Zanim będzie można przetłumaczyć łańcuchy, należy je najpierw zaznaczyć do tłumaczenia.

Git używa interfejsu internacjonalizacji, który otacza gettextbibliotekę systemową , więc większość porad z twojej dokumentacji gettext (na temat systemów GNU info gettextw terminalu) ma zastosowanie.

Na miejscu od wersji 1.7.9+ (styczeń 2012):

Git używa gettextdo tłumaczenia komunikatów z najczęściej używanych interfejsów na język użytkownika, jeśli tłumaczenia są dostępne, a ustawienia regionalne są odpowiednio ustawione .
Dystrybutorzy mogą dodawać nowe POpliki, po/aby dodawać nowe tłumaczenia.

Jeśli więc twoja aktualizacja zepsuła tłumaczenie, sprawdź, co gettextużywa:
Zobacz na przykład „ Zmienne środowiskowe ustawień regionalnych

Ustawienia regionalne składają się z kilku kategorii ustawień regionalnych, zobacz Aspekty. Gdy program wyszukuje wartości zależne od ustawień regionalnych, robi to zgodnie z następującymi zmiennymi środowiskowymi w kolejności priorytetów:

LANGUAGE
LC_ALL
LC_xxx, according to selected locale category: LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, ...
LANG 

Zmienne, których wartość jest ustawiona, ale jest pusta, są ignorowane w tym wyszukiwaniu.

LANGjest normalną zmienną środowiskową do określania ustawień regionalnych. Jako użytkownik zwykle ustawiasz tę zmienną (chyba że inne zmienne zostały już ustawione przez system, w /etc/profilelub podobnych plikach inicjalizacyjnych).

LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, I tak dalej, są zmienne środowiskowe przeznaczone do zastąpienia LANGi wpływając tylko jedną kategorię lokalizacji.
Na przykład załóżmy, że jesteś szwedzkim użytkownikiem w Hiszpanii i chcesz, aby Twoje programy obsługiwały liczby i daty zgodnie z hiszpańskimi konwencjami i tylko komunikaty powinny być w języku szwedzkim. Następnie możesz utworzyć ustawienie regionalne o nazwie „ sv_ES” lub „ sv_ES.UTF-8” za pomocą localedefprogramu. Ale jest prostsze i daje ten sam efekt, aby ustawić LANGzmienną na, es_ES.UTF-8a LC_MESSAGESzmienną na sv_SE.UTF-8; te dwie wersje językowe są już preinstalowane w systemie operacyjnym.

LC_ALLjest zmienną środowiskową, która zastępuje wszystkie z nich. Jest zwykle używany w skryptach uruchamiających określone programy. Na przykład, skrypty configure generowanych przez GNU autoconfużytku LC_ALL, aby upewnić się, że testy konfiguracyjne nie działają w locale sposobów zależnych.

Niektóre systemy, niestety, ustawione LC_ALLw /etc/profilelub w podobnych plików inicjujących. Dlatego jako użytkownik musisz usunąć ustawienie tej zmiennej, jeśli chcesz ustawić LANGi opcjonalnie niektóre inne LC_xxxzmienne.

VonC
źródło
Skąd więc pochodzi transalacja? Powodem, dla którego zapytałem, jest to, że miałem git w języku angielskim przed i po aktualizacji zmienił się na mój język, ale mi się to nie podoba.
user905686
@ user905686 przepraszam, mój błąd. Git obsługuje locale, z gettext. Sprawdź więc swoje zmienne środowiskowe. Wyszczególniam, który z nich sprawdzić w mojej zredagowanej odpowiedzi.
VonC
A jeśli chcę zmienić język tylko dla git, ale nie dla innych programów? Tj. Tłumaczenia psują niektóre rzeczy, więc chciałbym, aby git zawsze (nieważne, który program go wywoła ) miał LANG = C i wszystko inne w moim ojczystym języku. Jakieś pomysły?
Droggl
@Droggl Tak długo, jak ustawisz LANGsesję bash / shell / DOS, której używasz git(lub uruchamiasz git-guiz), tylko git(lub git-gui) będzie używać tego konkretnego ustawienia. Wszystkie inne programy będą dziedziczyć po zmiennych środowiskowych systemowych / użytkownika.
VonC
4

Uruchom LC_MESSAGES=C git, a nie LC_ALL = C lub LANG = C i nie ma potrzeby usuwania ani zmiany nazw plików.

To polecenie zmienia wyjściowe komunikaty Gita na angielski.

iapetus
źródło
2

GIT domyślnie ustawia język angielski, jeśli nie może znaleźć języka lokalnego.

Więc jeśli chcesz, aby GIT był w języku angielskim, po prostu sabotuj plik językowy, z którym działa. W moim przypadku zawsze działał z językiem niemieckim (czyli: de.msg ).

Jeśli go usunąłem lub zmieniłem jego nazwę, domyślnie był ustawiony na angielski.

wprowadź opis obrazu tutaj

Tutaj zmieniłem nazwę pliku

wprowadź opis obrazu tutaj

Oliver Watkins
źródło
Z Git dla Windows 2.x (64-bitowy) będzie to w formacie C:\Program Files\Git\mingw64\share\locale\$LANG\LC_MESSAGES\git.mo.
Koraktor
Zaletą tego podejścia może być to, że po aktualizacji gita tłumaczenie zostanie przywrócone (i być może poprawione), więc możesz ponownie zdecydować, czy chcesz go użyć, czy usunąć.
user905686
Sprawdziłem kod źródłowy, wygląda na to, że git nie obsługuje angielskiego: github.com/git-l10n/git-po/tree/master/po Nawet ja chcę najpierw użyć angielskiego przed chińskim i szwedzkim (en_GB: en: zh_HK: zh_CN: zh: sv_SE: sv), git nadal pokazuje mi chiński.
Michael Tsang
W systemie Mac OSx z zainstalowanym Git przez Homebrew, znalazłem lokalizacje w /usr/local/Cellar/git/2.21.0/share/locale/.
Magnus W,
0

Jak zasugerował Bengt: Dodaj te linie do swojego ~/.bashrclub ~/.bash_profileaby wymusić na gicie wyświetlanie wszystkich wiadomości w języku angielskim: vim ~/.bashrc- dla tego profilu (jeśli jesteś użytkownikiem ubuntui edytujesz to będzie to tylko dla tego użytkownika); dodaj te linie:

# Set Git language to English
#alias git='LANG=en_US git'
alias git='LANG=en_GB git'
#you can add also 
LANG=en_GB

i po zamknięciu pliku musisz napisać w powłoce:

source ~/.bashrc 

aby przeładować nowe ustawienia lub wyjść z terminala i połączyć się ponownie :)

Svetoslav
źródło
Jaki jest dodatkowy LANG=en_GBw ~/.bashrcrobić? Czy to nie tylko definiuje zmienną lokalną LANG?
user905686
0

Oto moje rozwiązanie, aby zmienić język git, wykonaj odpowiedź na to i to

1) nano ~/.bashrc
2) dodaj alias git='LANG=en_GB git'do pliku
2) zapisz plik
4)source ~/.bashrc

Teraz twój dupek już zmienił język. Jednak JEŚLI po ponownym uruchomieniu terminala i już nie działa, musisz

4.1) nano ~/.profile
4.2) dodaj source ~/.bashrc
4.3) zapisz plik

będzie source ~/.bashrcdziałać za każdym razem, gdy otworzysz terminal

Mam nadzieję, że to pomoże

Phan Van Linh
źródło