Homebrew e Git - linguagem incorreta na linha de comando

43

Eu tenho um problema estranho - quando eu uso o gitcomando que acompanha o pacote Command Line Tools, a interface na linha de comando é em inglês, como eu quero que seja. No entanto, a versão instalada usando o Homebrew usa alemão em sua saída (eu moro na Alemanha, mas o idioma do meu sistema está definido para inglês dos EUA e o computador foi realmente comprado em Cingapura, se for o caso).

Eu acredito que isso mudou apenas recentemente. Eu tive que dar meu Mac para reparo e o fiz em uma loja alemã. Agora que eu tenho meu computador de volta, notei que a saída do Git está em alemão, não tenho certeza se eles fizeram alguma coisa nas configurações do sistema enquanto estavam. Até onde eu sei, esse é o único aplicativo de linha de comando que usa o alemão como idioma. Aqui está a saída gerada pelo localecomando:

LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

Eu gostaria que o Git falasse comigo em inglês. Eu sei que posso definir o LANGetc. para inglês e (provavelmente) funcionaria, mas também gostaria de entender de onde essa mudança pode estar ocorrendo.

Alguma ideia?

EDIT : para tornar as coisas mais interessantes, eu uso outro Mac que recebi do trabalho. Foi comprado na Alemanha, as configurações iniciais de idioma eram o alemão (que mudei para o inglês dos EUA) e tudo funciona bem, ou seja, as duas instalações do Git (CLT e Homebrew) usam o inglês. As informações de local do localecomando são as mesmas.

wujek
fonte
Eu acho que estou tendo o mesmo problema. Rodando no macOS Mojave 10.14 (18A389), Homebrew 1.7.6, versão git 2.19.0 ...
Frank Lämmer
2
Isso apenas aconteceu comigo quando eu atualizado para Mojave; até agora funcionou bem. Todas as interfaces do OS X são em inglês, local C, mas estou em um país de língua alemã e o git está falando comigo em alemão. Então, como o git decide qual idioma usar?
Alexis

Respostas:

57

Recentemente, comecei a observar o mesmo comportamento, principalmente com o git (e após a atualização para o MacOS Mojave). No começo, eu pensei que era um problema com o próprio git. Então, eu reinstalei o git com homebrew sem sucesso.

No entanto, ir para a guia "Idioma e região" no MacOS "Configurações" e remover outros idiomas da lista que você não precisa (nota: eles são diferentes das fontes de entrada do teclado) resultaram no git exibindo as mensagens de saída do comando no terminal no idioma desejado (no meu caso, inglês).

Notavelmente, esse problema me ocorreu apenas no terminal macOS (e não, por exemplo, no terminal VSCode).

Anton K
fonte
11
Ainda não estou no Mojave, mas isso corrigiu o meu problema. E como você diz, o terminal VSCode ou Idea estava em inglês, apenas iterm2 estava em alemão. Eu tenho muitas fontes de entrada, incluindo alemão, pois muitas vezes escrevo em diferentes idiomas e preciso de seus caracteres especiais. Parece (apenas testado) quando adiciono uma fonte de entrada, ele também adiciona um idioma à lista 'Idioma e região', o que não é realmente necessário e causa o problema. Estranho o suficiente, o inglês ainda estava no topo da lista, mas de alguma forma substituído pelo segundo idioma, o alemão. Hmm.
wujek 29/09/18
11
Uma coisa semelhante aconteceu comigo depois de atualizar para o Mojave. Meu git do Terminal estava em inglês, mas o git através do terminal IntelliJ estava em espanhol (meu idioma secundário em Language & Reigon). I definir explicitamente a minha variável de ambiente LANG e que fixa-lo, porque eu quero espanhol em Língua e regiaõ
Sam
@wujek, o fato de você não estar usando o Mojave, permite que ainda seja um problema com o pacote git mais recente no homebrew. No meu sistema, apenas duas alterações foram feitas após as quais notei o problema: atualização para o Mojave e atualização do pacote git com homebrew.
Anton K
11
Fiquei tão surpreso ao ver git em russo: D
Artem
3
Excluir um idioma não é uma solução. Defino LANG = en_US.UTF-8 e ainda está em francês.
Walker Rowe
10

Estou tendo o mesmo problema. Após a atualização do homebrew git 2.17.0 -> 2.19.1, acho que a nova versão do git começa a respeitar a variável de ambiente LANG.

E se

LANG="en_US.UTF-8"

ou

LANG=

O git usará o inglês.

Se, por exemplo,

LANG="zh_CN.UTF-8"

O git usa chinês.

Eu não li os logs de confirmação do git, mas acho que está funcionando conforme o esperado. Apenas sinta um pouco estranho ver as mensagens de saída da linha de comando git que não estão em inglês :)

PickBoy
fonte
na verdade, en_ENnão é um código de idioma válido. As localizações válidas têm códigos de país com os 2 últimos caracteres, portanto, por exemplo, en_USe en_UKsão localidades válidas.
Walter Tross
Não funciona para mim, mesmo com a versão 2.21.0 do git do homebrew 2.1.6 #
Nicolas Massart
@WalterTross Na verdade, en_UKtambém é inválido, en_GB(Grã-Bretanha) é o correto. stackoverflow.com/a/7296292/9534591
ik1ne
Certo, e, de fato, eu já havia corrigido a resposta de Timothy Siwula corretamente, depois de verificar novamente. Sempre é preciso checar com UK vs GB :-(. BTW, é louco que GB seja o código ISO para o Reino Unido, que consiste na Grã-Bretanha e na Irlanda do Norte: en.wikipedia.org/wiki/ISO_3166-2: GB
Walter Tross
essa deve ser a resposta validada, a remoção de idiomas das configurações tem outros impactos.
tsnobip
4

Adicione isso ao seu .bash_profilearquivo - há um bug semelhante no componente terminal do PyCharm no macOS mojave (10.14).

# locale settings, string mac/chinese/pycharm/git bug
# https://coderwall.com/p/ehvc8w/set-lang-variable-in-osx-terminal-app
export LANG="en_GB.UTF-8"
export LC_COLLATE="en_GB.UTF-8"
export LC_CTYPE="en_GB.UTF-8"
export LC_MESSAGES="en_GB.UTF-8"
export LC_MONETARY="en_GB.UTF-8"
export LC_NUMERIC="en_GB.UTF-8"
export LC_TIME="en_GB.UTF-8"
export LC_ALL=

Depois de fazer isso, você precisará reiniciar o sistema para que ele entre em vigor.

O crédito vai para esta postagem do blog

Tim Siwula
fonte
3

Pelo que sei, é um problema com o GNU gettext, em vez de um problema com o Git.

Parece que o bug foi corrigido no GNU gettext v0.20 ; mas, a partir desta publicação, o Homebrew infelizmente fornece apenas a v0.19.8.1 .


Reproduzi o problema da seguinte maneira:

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.4
BuildVersion:   18E226
$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
$ defaults read -g AppleLanguages
(
    "en-JP",
    "ja-JP",
    "sv-JP"
)
$ brew info gettext
gettext: stable 0.19.8.1 (bottled) [keg-only]
GNU internationalization (i18n) and localization (l10n) library
https://www.gnu.org/software/gettext/
/usr/local/Cellar/gettext/0.19.8.1 (1,934 files, 17.0MB)
  Poured from bottle on 2016-06-24 at 02:05:52
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/gettext.rb
...
$ /usr/local/Cellar/gettext/0.19.8.1/bin/msgcat --version
msgcat (GNU gettext-tools) 0.19.8.1
Copyright (c) 2001-2016 Free Software Foundation, Inc.
Licens GPLv3+: GNU GPL version 3 eller senare <http://gnu.org/licenses/gpl.html>
Detta program "ar fri programvara.  Du kan modifiera och distribuera den.
Det finns inte NAGON SOM HELST GARANTI, till den grad som lagen tillater.
Skrivet av Bruno Haible.
$ sudo filebyproc.d
CPU     ID                    FUNCTION:NAME
...
  2    957              open_nocancel:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/bin
  2    957              open_nocancel:entry msgcat /etc/localtime
  2    957              open_nocancel:entry msgcat /var/db/timezone/zoneinfo/posixrules
  2    957              open_nocancel:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/locale.alias
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/en_JP/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/en/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja_JP.eucJP/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja_JP.eucjp/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja_JP/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja.eucJP/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja.eucjp/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja/LC_MESSAGES/gettext-tools.mo
  3    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/sv_JP/LC_MESSAGES/gettext-tools.mo
  3    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/sv/LC_MESSAGES/gettext-tools.mo
execjosh
fonte
o brew info gettextparece dar informações sobre sobre como questões de correção, adicionando gettex no caminho, mas eu não sou capaz de dizer se eu deveria fazer isso ou não ...
Nicolas Massart
0

Eu tive o mesmo problema com o Mojave e o Git 2.19, mas atualizei o Git para 2.21 e ele funcionou conforme o esperado novamente.

Juan Maya
fonte
2
Estou tendo o problema com o git 2.21.0
Walter Tross