Homebrew y Git: lenguaje incorrecto en la línea de comando

43

Tengo un problema extraño: cuando uso el gitcomando que viene con el paquete de herramientas de línea de comandos, la interfaz en la línea de comandos está en inglés, como quiero que sea. Sin embargo, la versión instalada usando Homebrew usa alemán en su salida (vivo en Alemania, pero el idioma de mi sistema está configurado en inglés de EE. UU. Y la computadora se compró en Singapur, si es importante).

Creo que esto cambió solo recientemente. Tuve que reparar mi Mac y lo hice en una tienda alemana. Ahora que tengo mi computadora de nuevo, noté que la salida de Git está en alemán, no estoy seguro de si hicieron algo en la configuración del sistema mientras la tenían. Hasta donde sé, esta es la única aplicación de línea de comandos que utiliza el alemán como idioma. Aquí está la salida generada por el localecomando:

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

Me gustaría que Git me hablara en inglés. Sé que puedo configurar el LANGetc. en inglés y (probablemente) funcionaría, pero también me gustaría entender de dónde puede venir este cambio.

¿Algunas ideas?

EDITAR : para hacer las cosas más interesantes, uso otra Mac que obtuve del trabajo. Se compró en Alemania, la configuración de idioma inicial era alemana (que cambié a inglés de EE. UU.) Y todo funciona bien, es decir, tanto las instalaciones de Git (CLT como Homebrew) usan inglés. La información local del localecomando es la misma.

wujek
fuente
Creo que estoy teniendo el mismo problema. Ejecutando en macOS Mojave 10.14 (18A389), Homebrew 1.7.6, git versión 2.19.0 ...
Frank Lämmer
2
Esto simplemente me pasó cuando he actualizado a Mojave; hasta ahora funcionó bien. Todas las interfaces OS X en inglés, C locale, pero estoy en un país de habla alemana y git me está hablando en alemán. Entonces, ¿cómo lo hace git decidir qué idioma usar?
alexis

Respuestas:

57

Recientemente, comencé a observar el mismo comportamiento, particularmente con git (y después de actualizar a MacOS Mojave). Al principio, pensé que era un problema con git en sí. Por lo tanto, he reinstalado git con homebrew en vano.

Sin embargo, ir a la pestaña "Idioma y región" en la "Configuración" de MacOS y eliminar otros idiomas de la lista que no necesita (nota: estos son diferentes de las fuentes de entrada del teclado) resultó en que git muestra los mensajes de salida del comando en terminal en el idioma deseado (en mi caso, inglés).

En particular, este problema se me ocurrió solo en el terminal macOS (y no, por ejemplo, en el terminal VSCode).

Anton K
fuente
1
Todavía no estoy en Mojave, pero esto solucionó mi problema. Y como usted dice, el terminal VSCode o Idea estaba en inglés, solo iterm2 estaba en alemán. Tengo bastantes fuentes de entrada, incluido el alemán, ya que a menudo escribo en diferentes idiomas y necesito sus caracteres especiales. Parece que (recién probado) cuando agrego una fuente de entrada, también agrega un idioma a la lista 'Idioma y región', que no es realmente necesario y causa el problema. Por extraño que parezca, el inglés todavía estaba en la cima de esa lista, pero de alguna manera anulado por el segundo idioma, el alemán. Hmm
wujek
1
Algo similar me sucedió después de actualizar a Mojave. Mi terminal git estaba en inglés pero el git a través del terminal IntelliJ estaba en español (mi idioma secundario en Language & Reigon). Configuré explícitamente mi variable de entorno LANG y eso lo solucionó, porque quiero español en Language & Reigon
Sam
@wujek el hecho de que no estés usando Mojave, permite la posibilidad de que todavía sea un problema con el paquete git más reciente en homebrew. En mi sistema, solo se han realizado dos cambios, después de lo cual he notado el problema: actualizar a Mojave y actualizar el paquete git con homebrew.
Anton K
2
Me sorprendió mucho ver git en ruso: D
Artem
3
Eliminar un idioma no es una solución. Configuré LANG = en_US.UTF-8 y todavía está en francés.
Walker Rowe
10

Estoy teniendo el mismo problema Después de la actualización de homebrew git 2.17.0 -> 2.19.1, encuentro que la nueva versión git comienza a respetar la variable LANG env.

Si

LANG="en_US.UTF-8"

o

LANG=

git usará inglés.

Si, por ejemplo,

LANG="zh_CN.UTF-8"

git usa chino.

No he leído los registros de confirmación de git, pero creo que está funcionando según lo previsto. Simplemente me siento un poco extraño al ver mensajes de salida de línea de comando git que no están en inglés :)

PickBoy
fuente
en realidad en_ENno es una localidad válida. Las configuraciones regionales válidas tienen códigos de país como los últimos 2 caracteres, por lo tanto, por ejemplo, en_USy en_UKson configuraciones regionales válidas.
Walter Tross
No funciona para mí, incluso con git versión 2.21.0 de homebrew 2.1.6
Nicolas Massart
@WalterTross En realidad en_UKtambién es inválido, en_GB(Gran Bretaña) es el correcto. stackoverflow.com/a/7296292/9534591
ik1ne
Correcto, y de hecho ya había arreglado la respuesta de Timothy Siwula correctamente, después de una doble verificación. Uno siempre tiene que verificar dos veces con UK vs GB :-(. Por cierto, es una locura que GB sea el código ISO para el Reino Unido, que consiste en Gran Bretaña e Irlanda del Norte: en.wikipedia.org/wiki/ISO_3166-2: GB
Walter Tross
esta debería ser la respuesta validada, eliminar los idiomas de la configuración tiene otros impactos.
tsnobip
4

Agregue esto a su .bash_profilearchivo: hay un error similar con el componente terminal de PyCharm en 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=

Después de hacer esto, deberá reiniciar su sistema para que surta efecto.

El crédito va a esta publicación de blog

Timxor
fuente
3

Por lo que puedo decir, es un problema con GNU gettext en lugar de un problema con Git.

Parece que el error fue corregido en GNU gettext v0.20 ; pero, a partir de esta publicación, Homebrew desafortunadamente solo proporciona v0.19.8.1 .


Reproduje el problema de la siguiente manera:

$ 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
fuente
el brew info gettextparece dar informaciones acerca de cómo los problemas del arreglo mediante la adición de gettex en camino, pero no soy capaz de decir si debería hacerlo o no ...
Nicolas Massart
0

Tuve el mismo problema con Mojave y Git 2.19, pero acabo de actualizar el Git a 2.21 y funcionó como se esperaba nuevamente.

Juan maya
fuente
2
Estoy teniendo el problema con git 2.21.0
Walter Tross