Come si cambia la lingua dell'interfaccia a riga di comando di Git?


103

Vorrei cambiare la lingua di git (in inglese) nella mia installazione Linux senza cambiare la lingua per altri programmi e non sono riuscito a trovare le impostazioni. Come farlo?


1
Stai cercando di cambiare locale. Ripubblicherei la domanda su superutente, credo.
JosefAssad

Risposte:


145

Aggiungi queste righe al tuo ~/.bashrco ~/.bash_profileper forzare git a visualizzare tutti i messaggi in inglese:

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

L'alias deve sovrascrivere LC_ALLsu alcuni sistemi, quando la variabile d'ambiente LC_ALLè impostata, che ha la precedenza su LANG. Vedere la specifica UNIX - Variabili d'ambiente per ulteriori spiegazioni.

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

Nel caso in cui tu abbia aggiunto queste righe ~/.bashrcall'alias, queste verranno definite all'avvio di una nuova shell interattiva. Nel caso in cui lo hai aggiunto ~/.bash_profileall'alias, verrà applicato al momento del login.


C'era un errore di battitura nel nome del file ( .bash.rcinvece di .bashrc). Devi anche chiudere e riavviare la shell per .bashrcessere eseguita. Ho aggiunto una nota anche a questo.
Bengt

L'ho provato nel mio .bashrcanche con il riavvio. Gli alias funzionano. È solo che la lingua non cambia.
user905686

Per verificare che .bashrcvenga eseguito con successo potresti aggiungere un test come echo "This is .bashrc"alla fine del file. Puoi anche farlo eseguire su richiesta senza dover riavviare il terminale o l'intero sistema . .bashrc. Infine, suggerirei di provare a impostare la LC_ALLvariabile d'ambiente invece di LANG, poiché la prima ha la precedenza.
Bengt

Va tutto bene con il mio .bashrc, davvero. Se LC_ALLha la precedenza, questo sarà il problema, è impostato sulla mia lingua. Ma poi non voglio cambiare l'impostazione generale della lingua ... Non posso sovrascriverla per un programma?
user905686

1
È possibile impostare la lingua utilizzando il metodo suggerito senza effetti collaterali, poiché queste variabili durano solo finché il comando impiega a terminare. Provalo correndo $ LC_ALL="en_US" mane poi$ man
Bengt

20

Se invece vuoi avere un solo comando in inglese, puoi semplicemente scrivere LC_ALL=Cprima del comando, ad esempio:

LC_ALL=C git status

risulterà in

# On branch master
nothing to commit, working directory clean

La lingua utilizzata in Cè l'inglese e sempre disponibile senza installare language pack aggiuntivi
(vedere https://askubuntu.com/a/142814/34298 )

Per cambiarlo per l'intera sessione bash corrente basta entrare

LANG=C

Per cambiarlo ad esempio in tedesco, inserisci

LANG=de_DE.UTF-8

Grazie per il LC_ALL=Csuggerimento, dato che ho dei problemi con la localizzazione, LC_ALL="en_US"non ha funzionato più di recente.
user905686

11

L'aggiunta di questa riga ha risolto il problema per me:

$ more ~/.bash_profile
export LANG=en_US

2
La domanda è come cambiare la lingua solo per git: l'ho aggiornata per essere più chiara.
user905686

6

Nota: a partire da Git 2.3.1+ (Q1 / Q2 2015), Git aggiungerà l'intestazione Accept-Language, se possibile.
Vedi commit f18604b di Yi EungJun ( eungjun-yi)

Aggiungere un Accept-Languagecolpo di testa che indica lingue preferite dall'utente definite da $LANGUAGE, $LC_ALL, $LC_MESSAGESe $LANG.

Ciò offre ai server git la possibilità di visualizzare messaggi di errore remoti nella lingua preferita dall'utente.


Hai locale per git gui o altre GUI ,ma non per la riga di comando, considerando che era una delle domande di GitSurvey 2010

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

Naturalmente, dal 2010, come po/READMEdescrive:

Prima che le stringhe possano essere tradotte, devono prima essere contrassegnate per la traduzione.

Git utilizza un'interfaccia di internazionalizzazione che avvolge la gettextlibreria del sistema , quindi si info gettextapplica la maggior parte dei consigli nella documentazione di gettext (sui sistemi GNU in un terminale).

In vigore da git 1.7.9+ (gennaio 2012):

Git utilizza gettextper tradurre i suoi messaggi di interfaccia più comuni nella lingua dell'utente se le traduzioni sono disponibili e la lingua è impostata in modo appropriato .
I distributori possono inserire nuovi POfile po/per aggiungere nuove traduzioni.

Quindi, se il tuo aggiornamento ha incasinato la traduzione, controlla cosa gettextutilizza:
Vedi, ad esempio, " Variabili d'ambiente locali "

Una locale è composta da diverse categorie di locale, vedere Aspetti. Quando un programma cerca valori dipendenti dalle impostazioni locali, lo fa in base alle seguenti variabili di ambiente, in ordine di priorità:

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

Le variabili il cui valore è impostato ma è vuoto vengono ignorate in questa ricerca.

LANGè la normale variabile di ambiente per specificare una locale. Come utente, normalmente imposti questa variabile (a meno che alcune delle altre variabili non siano già state impostate dal sistema, in /etc/profilefile di inizializzazione o simili).

LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, E così via, sono le variabili di ambiente destinate a ignorare LANGe che interessano una sola categoria di localizzazione.
Ad esempio, supponi di essere un utente svedese in Spagna e desideri che i tuoi programmi gestiscano numeri e date secondo le convenzioni spagnole e solo i messaggi devono essere in svedese. Quindi è possibile creare una locale denominata " sv_ES" o " sv_ES.UTF-8" utilizzando il localedefprogramma. Ma è più semplice, e ottiene lo stesso effetto, impostare la LANGvariabile su es_ES.UTF-8e la LC_MESSAGESvariabile su sv_SE.UTF-8; queste due versioni locali sono già preinstallate con il sistema operativo.

LC_ALLè una variabile d'ambiente che sovrascrive tutti questi. Viene tipicamente utilizzato negli script che eseguono programmi particolari. Ad esempio, configurare gli script generati autoconfdall'uso GNULC_ALL per assicurarsi che i test di configurazione non funzionano in modi dipendenti di locale.

Alcuni sistemi, sfortunatamente, sono impostati LC_ALLin /etc/profileo in file di inizializzazione simili. Come utente, è quindi necessario annullare l'impostazione di questa variabile se si desidera impostare LANGe, facoltativamente, alcune delle altre LC_xxxvariabili.


Allora da dove viene la transalation? Il motivo per cui l'ho chiesto è che avevo git in inglese prima e dopo un aggiornamento è cambiato nella mia lingua, ma non mi piace.
user905686

@ user905686 scusa, errore mio. Git supporta la localizzazione, con gettext. Quindi controlla le tue variabili d'ambiente. Descrivo in dettaglio quale controllare nella mia risposta modificata.
VonC

E se volessi cambiare solo la lingua per git ma non per altri programmi? Cioè per me le traduzioni rompono alcune cose, quindi vorrei che git sempre (indipendentemente dal programma che lo chiama) abbia LANG = C e tutto il resto nella mia lingua madre. Qualche idea?
Droggl

@Droggl Finché si imposta LANGnella sessione bash / shell / DOS che si sta utilizzando git(o che si avvia git-guida), solo git(o git-gui) utilizzerà quella specifica impostazione. Tutti gli altri programmi erediteranno dalle variabili di ambiente di sistema / utente.
VonC

4

Correre LC_MESSAGES=C git , non LC_ALL = C o LANG = C e non è necessario eliminare o rinominare i file.

Questo comando modifica l'output dei messaggi Git in inglese.


2

Il valore predefinito di GIT è l'inglese se non riesce a trovare la lingua locale.

Quindi, se vuoi che GIT sia in inglese, sabota semplicemente il file della lingua con cui è in esecuzione. Nel mio caso funzionava sempre con il tedesco (es: de.msg ).

Se l'ho cancellato o rinominato, il valore predefinito era inglese.

inserisci qui la descrizione dell'immagine

Qui ho rinominato il file

inserisci qui la descrizione dell'immagine


Con Git per Windows 2.x (64 bit) questo sarà in C:\Program Files\Git\mingw64\share\locale\$LANG\LC_MESSAGES\git.mo.
Koraktor

Il vantaggio di questo approccio potrebbe essere che dopo un aggiornamento di git, la traduzione tornerà (e forse migliorata), quindi puoi decidere di nuovo se vuoi usarla o rimuoverla di nuovo.
user905686

Ho controllato il codice sorgente, sembra che git non supporti l'inglese: github.com/git-l10n/git-po/tree/master/po Anche io voglio usare l'inglese prima del cinese e dello svedese (en_GB: en: zh_HK: zh_CN: zh: sv_SE: sv), git mi mostra ancora il cinese.
Michael Tsang

Su Mac OSx con Git installato tramite Homebrew, ho trovato le versioni locali in /usr/local/Cellar/git/2.21.0/share/locale/.
Magnus W

0

Come suggerito da Bengt: aggiungi queste righe al tuo ~/.bashrco ~/.bash_profileper forzare git a visualizzare tutti i messaggi in inglese: vim ~/.bashrc- per questo profilo (se sei utente ubuntue lo modifichi sarà solo per questo utente); aggiungi queste righe:

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

e dopo aver chiuso il file devi scrivere nella shell:

source ~/.bashrc 

per ricaricare nuove impostazioni o uscire dal terminale e ricollegarsi :)


Qual è l'ulteriore LANG=en_GBin ~/.bashrcdovrebbe fare? Questo non definisce solo la variabile locale LANG?
user905686

0

Ecco la mia soluzione per cambiare la lingua di git, segui la risposta a questo e questo

1) nano ~/.bashrc
2) aggiungi alias git='LANG=en_GB git'al file
2) salva il file
4)source ~/.bashrc

Ora il tuo git cambia già la lingua. Tuttavia, SE dopo il riavvio del terminale e non funziona più, è necessario

4.1) nano ~/.profile
4.2) aggiungi source ~/.bashrc
4.3) salva il file

verrà source ~/.bashrceseguito ogni volta che si apre il terminale

Spero che aiuti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.