¿Cómo puedo cambiar el idioma de salida del comando de mi idioma nativo al inglés, para poder publicar mi pregunta de Ubuntu con salida de comando en inglés (mensajes de error)?
¿Cómo puedo cambiar el idioma de salida del comando de mi idioma nativo al inglés, para poder publicar mi pregunta de Ubuntu con salida de comando en inglés (mensajes de error)?
Respuestas:
export LC_ALL=C
es suficiente. Toda la salida del comando posterior estará en inglés.
Más información: ¿Qué hace "LC_ALL = C"?
Si desea volver al idioma nativo, desactive la LC_ALL
variable:
unset LC_ALL
Aquí está mi función bash para cambiar entre las configuraciones regionales DE y EN.
Puede extender este código con sus idiomas preferidos. Para usar esto, póngalo en su ~/.bashrc
(o ~/.bash_profile
) -
Llámalo _configure_locale EN
para cambiar al inglés.
function _configure_locale() { # [profile]
local profile=${1:-EN}
case ${profile} in
DE|DE_DE|de_DE)
LC_ALL="de_DE.UTF-8"
LANG="de_DE.UTF-8"
LANGUAGE="de_DE:de:en_US:en"
;;
EN|EN_US|en|en_US)
LC_ALL="en_US.UTF-8"
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
;;
*)
echo "ALERT" "${FUNCNAME}: unknown profile '${profile}'"
;;
esac
LC_PAPER="de_DE.UTF-8"; # independent from locale
LESSCHARSET="utf-8"; # independent from locale
MM_CHARSET="utf-8" # independent from locale
echo "locale settings" "${LANG}";
export LC_ALL LANG LANGUAGE LC_PAPER LESSCHARSET MM_CHARSET
}
En general sugiero cambiar las 3 variables de entorno LC_ALL
, LANG
, LANGUAGE
para evitar mal comportamiento de algunos programas.
Ampliar el código a su idioma nativo es bastante simple. Puede encontrar los valores necesarios invocando el siguiente comando
env |egrep -e 'LC_ALL|LANG'
case
y especificar la entrada para que se ajuste al <lang>_<country>
formato. Luego puede pasarlo, asumiendo UTF-8. Si realmente está interesado en una solución ordenada, probablemente debería verificar la entrada del usuario locale -a
para asegurarse de que la configuración regional solicitada esté realmente instalada.
Abra una terminal Ctrl+ Alt+ Ty escriba:
LANG=en_US.UTF-8 bash
o :
LC_ALL=C bash
Ahora la salida del terminal está en idioma inglés. Puedes consultarlo con locale
.
Es posible hacer un comando para hacer eso con un permanentealias
. Abra el .bashrc
archivo con su editor preferido y coloque el siguiente código allí:
alias basheng='LANG=en_US.UTF-8 bash'
o :
alias basheng='LC_ALL=C bash'
Reinicie el shell Bash. Ahora tienes el comando basheng
. Escríbalo en Bash para obtener un shell Bash en inglés. Para dejar el tipo de shell inglés exit
.
Fuente:
LANG
es suficiente para probar toda la salida.
LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bash
¿mejor?
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL
.
Esto se configura mediante la configuración regional , que se puede configurar mediante la variable de entorno. Hay cuatro capas de variables; el primero que se establece tiene prioridad:
LANGUAGE
- No lo use, rara vez es útil y puede causar errores. Desafortunadamente, algunas versiones de Ubuntu lo configuran, por lo que es posible que deba desarmarlo.LC_ALL
- anula la configuración específica de la categoría, destinada principalmente a ser utilizada por programas que desean ejecutarse en la configuración regional predeterminada. No está destinado a ser utilizado como configuración global.LC_
: LC_CTYPE
, LC_MESSAGES
, LC_TIME
, ....LANG
- establece la configuración regional predeterminada para todas las categorías, pensada para usarse en una configuración de usuario globalLa configuración regional “normal”, con todos los mensajes sin traducir, el tiempo predeterminado y los formatos de número, ASCII como el conjunto de caracteres, etc se llama C
. Esta configuración regional está presente en todos los sistemas.
Por lo tanto, para ejecutar un programa con mensajes en inglés, ejecute
unset LANGUAGE; LC_MESSAGES=C myprogram --option
o
unset LANGUAGE
export LC_MESSAGES=C
myprogram --option
myotherprogram
Para ejecutar un programa con toda la localización desactivada, ejecute
env -u LANGUAGE LC_ALL=C myprogram --option
pero tenga en cuenta que esto cambia la codificación de caracteres a ASCII (por lo que no hay Unicode, latin-1, etc.).
Consulte ¿ En qué debería establecer mi configuración regional y cuáles son las implicaciones de hacerlo? para una descripción más detallada de las configuraciones regionales.
LANGUAGE
es que tiene prioridad sobre LC_ALL
, lo que causa errores porque los programas configuran LC_ALL
resultados predecibles y luego se confunden porque no obtienen el resultado esperado.
LANGUAGE
Sin embargo, la configuración es una mala idea, porque los beneficios son muy escasos, mientras que los errores pueden ser molestos y difíciles de encontrar. Sin embargo, tienes razón, debo mencionar inquietante LANGUAGE
.
La forma más fácil es abrir el terminal presionando Alt + F2 y ejecutando este comando:
env LANGUAGE=en gnome-terminal
en tus ~/.bashrc
unset LC_ALL
export LC_MESSAGES=C
entonces
source ~/.bashrc
Revisalo
$ locale
LANG=pl_PL.utf8
LANGUAGE=
LC_CTYPE="pl_PL.utf8"
LC_NUMERIC="pl_PL.utf8"
LC_TIME="pl_PL.utf8"
LC_COLLATE="pl_PL.utf8"
LC_MONETARY="pl_PL.utf8"
LC_MESSAGES=C
LC_PAPER="pl_PL.utf8"
LC_NAME="pl_PL.utf8"
LC_ADDRESS="pl_PL.utf8"
LC_TELEPHONE="pl_PL.utf8"
LC_MEASUREMENT="pl_PL.utf8"
LC_IDENTIFICATION="pl_PL.utf8"
LC_ALL=
¿Por qué desarmar primero?
LC_ALL anula la configuración individual de LC_ *: si se establece LC_ALL, ninguno de los siguientes tiene ningún efecto.
Hecho.
LANG
así, y podría ayudar, pero no requerimos que los mensajes de error copiados estén en inglés. Requerimos que lo que el autor ha escrito esté en inglés (aunque generalmente lo traducimos en lugar de cerrar las preguntas). Entonces, una pregunta escrita en inglés con texto de terminal en español está bien, mientras que una pregunta escrita en español con texto de terminal en inglés no.