Como mudar o idioma da interface de linha de comando do Git?

103

Eu gostaria de alterar o idioma do git (para inglês) na minha instalação do Linux sem alterar o idioma de outros programas e não consegui encontrar as configurações. Como fazer isso?

user905686
fonte
1
Você está querendo mudar o local. Eu repostaria essa pergunta no superusuário, eu acho.
JosefAssad

Respostas:

145

Adicione estas linhas ao seu ~/.bashrcou ~/.bash_profilepara forçar o git a exibir todas as mensagens em inglês:

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

O alias precisa ser substituído LC_ALLem alguns sistemas, quando a variável de ambiente LC_ALLé definida, que tem precedência sobre LANG. Consulte a Especificação do UNIX - Variáveis ​​de ambiente para obter mais explicações.

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

Caso você tenha adicionado essas linhas ao ~/.bashrcalias, elas serão definidas quando um novo shell interativo for iniciado. Caso você tenha adicionado ao ~/.bash_profilealias, será aplicado ao fazer o login.

Bengt
fonte
Houve um erro de digitação no nome do arquivo (em .bash.rcvez de .bashrc). Você também deve fechar e iniciar o shell novamente para .bashrcque seja executado. Eu adicionei uma nota sobre isso também.
Bengt
Eu tentei no meu .bashrcmesmo reiniciando. Os apelidos funcionam. É que a linguagem não muda.
user905686
Para verificar se o .bashrcé executado com sucesso, você pode adicionar um teste como echo "This is .bashrc"no final do arquivo. Você também pode fazer com que seja executado sob demanda, sem ter que reiniciar o terminal ou todo o sistema por . .bashrc. Finalmente, eu sugeriria tentar definir a LC_ALLvariável de ambiente em vez de LANG, uma vez que a primeira tem precedência.
Bengt
Está tudo bem comigo .bashrc, sério. Se LC_ALLtiver precedência, então este será o problema, está definido para o meu idioma. Mas não quero alterar a configuração geral do idioma ... Não posso sobrescrever para um programa?
user905686
1
Você pode definir o idioma usando o método sugerido sem efeitos colaterais, uma vez que essas variáveis ​​só duram o tempo que o comando leva para terminar. Experimente executando $ LC_ALL="en_US" mane$ man
Bengt
20

Se você quiser apenas um comando em inglês, pode simplesmente escrever LC_ALL=Cantes do comando, por exemplo:

LC_ALL=C git status

vai resultar em

# On branch master
nothing to commit, working directory clean

O local usado Cé o inglês e está sempre disponível sem a instalação de pacotes de idiomas adicionais
(consulte https://askubuntu.com/a/142814/34298 )

Para alterá-lo para toda a sessão bash atual, basta inserir

LANG=C

Para alterá-lo, por exemplo para alemão, insira

LANG=de_DE.UTF-8
rubo77
fonte
Obrigado pela LC_ALL=Csugestão, como estou com alguns problemas com o locale, LC_ALL="en_US"não funcionou mais recentemente.
user905686
11

Adicionar esta linha resolveu o problema para mim:

$ more ~/.bash_profile
export LANG=en_US
Pato Donald
fonte
2
A questão é como alterar o idioma apenas para git - atualizei para ficar mais claro.
user905686
6

Observação: desde Git 2.3.1+ (Q1 / Q2 2015), o Git adicionará o cabeçalho Accept-Language, se possível.
Veja o commit f18604b de Yi EungJun ( eungjun-yi)

Adicionar um Accept-Languagecabeçalho que indica idiomas preferenciais do utilizador definida por $LANGUAGE, $LC_ALL, $LC_MESSAGESe $LANG.

Isso dá aos servidores git a chance de exibir mensagens de erro remotas no idioma preferido do usuário.


Você tem localidade para git gui ou outras GUIs ,mas não para a linha de comando, considerando que era uma das questões do GitSurvey 2010

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

Claro, desde 2010, conforme po/READMEdescreve:

Antes que as strings possam ser traduzidas, elas primeiro devem ser marcadas para tradução.

Git usa uma interface de internacionalização que envolve a gettextbiblioteca do sistema , então a maioria dos conselhos em sua documentação gettext (em sistemas GNU info gettextem um terminal) se aplica.

Em vigor desde git 1.7.9+ (janeiro de 2012):

O Git usa gettextpara traduzir suas mensagens de interface mais comuns para o idioma do usuário se as traduções estiverem disponíveis e a localidade for definida de forma apropriada .
Os distribuidores podem inserir novos POarquivos po/para adicionar novas traduções.

Portanto, se sua atualização atrapalhou a tradução, verifique o que gettextusa:
Veja, por exemplo, " Variáveis ​​de ambiente locais "

Uma localidade é composta de várias categorias de localidade, consulte Aspectos. Quando um programa procura valores dependentes de localidade, ele faz isso de acordo com as seguintes variáveis ​​de ambiente, em ordem de prioridade:

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

Variáveis ​​cujo valor está definido, mas está vazio, são ignoradas nesta pesquisa.

LANGé a variável de ambiente normal para especificar uma localidade. Como um usuário, você normalmente define esta variável (a menos que algumas das outras variáveis ​​já tenham sido definidas pelo sistema, em /etc/profileou em arquivos de inicialização semelhantes).

LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, E assim por diante, são as variáveis de ambiente destinadas a substituir LANGe afetando apenas uma única categoria localidade.
Por exemplo, suponha que você seja um usuário sueco na Espanha e deseja que seus programas lidem com números e datas de acordo com as convenções espanholas, e apenas as mensagens devem estar em sueco. Então você pode criar um local chamado ' sv_ES' ou ' sv_ES.UTF-8' usando o localedefprograma. Mas é mais simples, e consegue o mesmo efeito, definir a LANGvariável como es_ES.UTF-8e a LC_MESSAGESvariável como sv_SE.UTF-8; esses dois locais já vêm pré-instalados com o sistema operacional.

LC_ALLé uma variável de ambiente que substitui tudo isso. Normalmente é usado em scripts que executam programas específicos. Por exemplo, configure scripts gerados pelo GNU autoconfuse LC_ALLpara certificar-se de que os testes de configuração não operem de maneiras dependentes de localidade.

Alguns sistemas, infelizmente, são configurados LC_ALLem /etc/profileou em arquivos de inicialização semelhantes. Como usuário, você deve, portanto, remover essa variável se quiser definir LANGe, opcionalmente, algumas das outras LC_xxxvariáveis.

VonC
fonte
Então, de onde vem a tradução? A razão pela qual eu perguntei é que eu tinha git em inglês antes e depois de uma atualização mudou para o meu idioma, mas eu não gosto disso.
user905686
@ user905686 desculpe, erro meu. Git suporta locale, com gettext. Portanto, verifique suas variáveis ​​de ambiente. Eu detalho qual verificar na minha resposta editada.
VonC de
E se eu quiser apenas alterar o idioma do git, mas não de outros programas? Ou seja, para mim, as traduções quebram algumas coisas, então eu gostaria que o git sempre (não importa qual programa o chama) tenha LANG = C e tudo o mais em minha língua nativa. Alguma ideia?
Droggl
@Droggl Contanto que você defina LANGna sessão bash / shell / DOS que você está usando git(ou iniciando git-gui), apenas git(ou git-gui) estará usando essa configuração específica. Todos os outros programas herdarão das variáveis ​​de ambiente do sistema / usuário.
VonC
4

Execute LC_MESSAGES=C git, não LC_ALL = C ou LANG = C e não há necessidade de excluir ou renomear arquivos.

Este comando altera a saída das mensagens Git para o inglês.

iapeto
fonte
2

O padrão do GIT é o inglês se não encontrar o idioma local.

Portanto, se você quiser que o GIT esteja em inglês, sabote o arquivo de idioma com o qual ele está sendo executado. No meu caso estava sempre rodando em alemão (ie: de.msg ).

Se eu excluí-lo ou renomeá-lo, o padrão é o inglês.

insira a descrição da imagem aqui

Aqui eu renomei o arquivo

insira a descrição da imagem aqui

Oliver Watkins
fonte
Com Git para Windows 2.x (64 bits), isso estará disponível C:\Program Files\Git\mingw64\share\locale\$LANG\LC_MESSAGES\git.mo.
Koraktor
A vantagem desta abordagem pode ser que após uma atualização do git, a tradução estará de volta (e talvez melhorada), então você pode decidir novamente se deseja usá-la ou removê-la novamente.
user905686
Eu verifiquei o código-fonte, parece que git não suporta inglês: github.com/git-l10n/git-po/tree/master/po Mesmo eu quero usar o inglês antes de chinês e sueco (en_GB: en: zh_HK: zh_CN: zh: sv_SE: sv), git ainda mostra chinês para mim.
Michael Tsang
No Mac OSx com Git instalado via Homebrew, encontrei os locais em /usr/local/Cellar/git/2.21.0/share/locale/.
Magnus W
0

Como Bengt sugeriu: Adicione estas linhas ao seu ~/.bashrcou ~/.bash_profilepara forçar o git a exibir todas as mensagens em inglês: vim ~/.bashrc- para este perfil (se você for um usuário ubuntue editar isso, será apenas para este usuário); adicione estas linhas:

# 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 depois de fechar o arquivo, você precisa escrever no shell:

source ~/.bashrc 

para recarregar novas configurações ou sair do terminal e conectar novamente :)

Svetoslav
fonte
Qual é o adicional LANG=en_GBno ~/.bashrcsuposto fazer? Isso não apenas define a variável local LANG?
user905686
0

Aqui está minha solução para alterar a linguagem git, depois responda isso e esta

1) nano ~/.bashrc
2) adicionar alias git='LANG=en_GB git'ao arquivo
2) salvar o arquivo
4)source ~/.bashrc

Agora seu git já mudou o idioma. No entanto, SE após reiniciar o terminal e ele não funcionar mais, você precisa

4.1) nano ~/.profile
4.2) adicionarsource ~/.bashrc
4.3) salvar o arquivo

vai fazer source ~/.bashrc funcionar sempre que você abrir o terminal

Espero que ajude

Phan Van Linh
fonte