¿Cómo se cambia el idioma de la interfaz de línea de comandos de Git?

103

Me gustaría cambiar el idioma de git (a inglés) en mi instalación de Linux sin cambiar el idioma de otros programas y no pude encontrar la configuración. ¿Cómo hacerlo?

usuario905686
fuente
1
Estás buscando cambiar de lugar. Volvería a publicar esa pregunta en el superusuario, creo.
JosefAssad

Respuestas:

145

Agregue estas líneas a su ~/.bashrco ~/.bash_profilepara forzar a git a mostrar todos los mensajes en inglés:

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

El alias debe anularse LC_ALLen algunos sistemas, cuando se establece la variable de entorno LC_ALL, que tiene prioridad sobre LANG. Consulte la Especificación UNIX - Variables de entorno para obtener más explicaciones.

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

En caso de que haya agregado estas líneas al ~/.bashrcalias, se definirá cuando se inicie un nuevo shell interactivo. En caso de que lo hayas agregado al ~/.bash_profilealias, se aplicará al iniciar sesión.

Bengt
fuente
Hubo un error tipográfico en el nombre del archivo (en .bash.rclugar de .bashrc). También debe cerrar e iniciar el shell nuevamente para .bashrcque se ejecute. También agregué una nota sobre esto.
Bengt
Lo probé en mi .bashrcincluso con reiniciar. Los alias funcionan. Es solo que el idioma no cambia.
user905686
Para verificar que .bashrcse ejecute correctamente, puede agregar una prueba como echo "This is .bashrc"al final del archivo. También puede ejecutarlo bajo demanda sin tener que reiniciar el terminal o todo el sistema . .bashrc. Finalmente, sugeriría intentar establecer la LC_ALLvariable de entorno en lugar de LANG, ya que la primera tiene prioridad.
Bengt
Todo está bien con mi .bashrc, de verdad. Si LC_ALLtiene prioridad, entonces este será el problema, está configurado en mi idioma. Pero entonces no quiero cambiar la configuración general del idioma ... ¿No puedo sobrescribirlo para un programa?
user905686
1
Puede configurar el idioma usando el método sugerido sin efectos secundarios, ya que estas variables solo tienen vida mientras el comando tarda en terminar. Pruébelo ejecutando $ LC_ALL="en_US" many luego$ man
Bengt
20

Si solo desea tener un comando en inglés, puede escribir LC_ALL=Cantes del comando, por ejemplo:

LC_ALL=C git status

resultará en

# On branch master
nothing to commit, working directory clean

La configuración regional que se usa en Ces inglés y siempre está disponible sin instalar paquetes de idiomas adicionales
(consulte https://askubuntu.com/a/142814/34298 )

Para cambiarlo para toda la sesión de bash actual, simplemente ingrese

LANG=C

Para cambiarlo por ejemplo a alemán ingrese

LANG=de_DE.UTF-8
rubo77
fuente
Gracias por la LC_ALL=Csugerencia, ya que tengo algunos problemas con la configuración regional, LC_ALL="en_US"no funcionó más recientemente.
user905686
11

Agregar esta línea resolvió el problema para mí:

$ more ~/.bash_profile
export LANG=en_US
Pato Donald
fuente
2
La pregunta es cómo cambiar el idioma solo para git; lo actualicé para que sea más claro.
user905686
6

Nota: desde Git 2.3.1+ (Q1 / Q2 2015), Git agregará el encabezado Accept-Language si es posible.
Ver la confirmación f18604b de Yi EungJun ( eungjun-yi)

Añadir una Accept-Languagecabecera que indica los idiomas preferidos del usuario definidos por $LANGUAGE, $LC_ALL, $LC_MESSAGESy $LANG.

Esto le da a los servidores de git la oportunidad de mostrar mensajes de error remotos en el idioma preferido del usuario.


Tiene una configuración regional para git gui u otras GUI ,pero no para la línea de comandos, considerando que fue una de las preguntas de GitSurvey 2010

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

Por supuesto, desde 2010, como se po/READMEdescribe:

Antes de que las cadenas se puedan traducir, primero deben marcarse para su traducción.

Git usa una interfaz de internacionalización que envuelve la gettextbiblioteca del sistema , por lo que se info gettextaplican la mayoría de los consejos en su documentación de gettext (en sistemas GNU en una terminal).

En su lugar desde git 1.7.9+ (enero de 2012):

Git utiliza gettextpara traducir sus mensajes de interfaz más comunes al idioma del usuario si hay traducciones disponibles y la configuración regional está configurada correctamente .
Los distribuidores pueden colocar nuevos POarchivos po/para agregar nuevas traducciones.

Por lo tanto, si su actualización ha estropeado la traducción, verifique qué gettextusos:
consulte, por ejemplo, " Variables de entorno local "

Una configuración regional se compone de varias categorías de configuración regional, consulte Aspectos. Cuando un programa busca valores dependientes de la configuración regional, lo hace de acuerdo con las siguientes variables de entorno, en orden de prioridad:

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

Las variables cuyo valor está establecido pero está vacío se ignoran en esta búsqueda.

LANGes la variable de entorno normal para especificar una configuración regional. Como usuario, normalmente establece esta variable (a menos que el sistema ya haya establecido algunas de las otras variables, en /etc/profilearchivos de inicialización o similares).

LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, Y así sucesivamente, son las variables de entorno destinadas a anular LANGy que afecta sólo a una única categoría de localización.
Por ejemplo, suponga que es un usuario sueco en España y desea que sus programas manejen números y fechas de acuerdo con las convenciones españolas, y solo los mensajes deben estar en sueco. Luego, podría crear una configuración regional llamada sv_ES"o sv_ES.UTF-8" mediante el uso del localedefprograma. Pero es más sencillo y logra el mismo efecto establecer la LANGvariable en es_ES.UTF-8y la LC_MESSAGESvariable en sv_SE.UTF-8; estas dos configuraciones regionales ya vienen preinstaladas con el sistema operativo.

LC_ALLes una variable de entorno que anula todos estos. Suele utilizarse en scripts que ejecutan programas particulares. Por ejemplo, configure los scripts generados por el autoconfuso de GNU LC_ALLpara asegurarse de que las pruebas de configuración no operen de manera dependiente de la configuración regional.

Algunos sistemas, desafortunadamente, se instalan LC_ALLen /etc/profilearchivos de inicialización similares. Como usuario, por lo tanto, debe desarmar esta variable si desea establecer LANGy, opcionalmente, algunas de las otras LC_xxxvariables.

VonC
fuente
Entonces, ¿de dónde viene la transacción? La razón por la que pregunté es que tenía git en inglés antes y después de una actualización cambió a mi idioma, pero no me gusta esto.
user905686
@ user905686 lo siento, mi error. Git admite la configuración regional, con gettext. Así que revisa tus variables de entorno. Detallo cuál verificar en mi respuesta editada.
VonC
¿Qué sucede si solo quiero cambiar el idioma de git pero no de otros programas? Es decir, para mí las traducciones rompen algunas cosas, así que me gustaría tener git siempre (sin importar qué programa lo llame) tenga LANG = C y todo lo demás en mi idioma nativo. ¿Algunas ideas?
Droggl
@Droggl Siempre que establezcas LANGen la sesión bash / shell / DOS que estás usando git(o git-guidesde la que inicias ), solo git(o git-gui) usará esa configuración específica. Todos los demás programas heredarán de las variables de entorno del sistema / usuario.
VonC
4

Ejecutar LC_MESSAGES=C git, no LC_ALL = C o LANG = C y no es necesario eliminar o cambiar el nombre de los archivos.

Este comando cambia los mensajes de salida de Git a inglés.

iapetus
fuente
2

GIT toma el inglés de forma predeterminada si no puede encontrar el idioma de la configuración regional.

Entonces, si desea que GIT esté en inglés, simplemente sabotee el archivo de idioma con el que se está ejecutando. En mi caso, siempre se ejecutó con alemán (es decir: de.msg ).

Si lo eliminé o lo renombré, entonces se estableció por defecto en inglés.

ingrese la descripción de la imagen aquí

Aquí cambié el nombre del archivo

ingrese la descripción de la imagen aquí

Oliver Watkins
fuente
Con Git para Windows 2.x (64 bits), esto estará en formato C:\Program Files\Git\mingw64\share\locale\$LANG\LC_MESSAGES\git.mo.
Koraktor
La ventaja de este enfoque podría ser que después de una actualización de git, la traducción estará de regreso (y tal vez mejorada), por lo que puede decidir nuevamente si desea usarla o eliminarla nuevamente.
user905686
Revisé el código fuente, parece que git no es compatible con inglés: github.com/git-l10n/git-po/tree/master/po Incluso yo quiero usar primero el inglés antes que el chino y el sueco (en_GB: en: zh_HK: zh_CN: zh: sv_SE: sv), git todavía me muestra chino.
Michael Tsang
En Mac OSx con Git instalado a través de Homebrew, encontré las configuraciones regionales en /usr/local/Cellar/git/2.21.0/share/locale/.
Magnus W
0

Como sugirió Bengt: Agregue estas líneas a su ~/.bashrco ~/.bash_profilepara forzar a git a mostrar todos los mensajes en inglés: vim ~/.bashrc- para este perfil (si es usuario ubuntuy edita esto, será solo para este usuario); agregue estas líneas:

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

y después de cerrar el archivo, debe escribir en shell:

source ~/.bashrc 

para recargar nuevas configuraciones o salir del terminal y conectarse de nuevo :)

Svetoslav
fuente
¿Cuál es el adicional LANG=en_GBde ~/.bashrcque hacer? ¿No define eso la variable local LANG?
user905686
0

Aquí está mi solución para cambiar el idioma de git, siga responda esto y esto

1) nano ~/.bashrc
2) agregar alias git='LANG=en_GB git'al archivo
2) guardar el archivo
4)source ~/.bashrc

Ahora tu git ya ha cambiado el idioma. Sin embargo, SI después de su terminal de reinicio y no funciona más, es necesario

4.1) nano ~/.profile
4.2) agregar source ~/.bashrc
4.3) guardar el archivo

se source ~/.bashrcejecutará cada vez que abra la terminal

Espero que ayude

Phan Van Linh
fuente