Cambiar el idioma de salida del comando del idioma nativo al inglés

84

¿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)?

BuZZ-dEE
fuente
55
Esto es algo engañoso. En realidad, no es necesario que las personas hagan esto . (Si cree que deberíamos exigir que los OP se carguen de esta manera, publique en meta antes de indicar a alguien que lo haga). Pueden cambiar LANGasí, 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.
Eliah Kagan
44
@EliahKagan sí, tienes razón, pero de todos modos creo que es útil.
BuZZ-dEE
2
Estoy de acuerdo, es útil que las personas puedan hacer esto, ¡y bueno que hayas publicado esta pregunta! Sin embargo, es importante que las personas sepan que no les exigimos que hagan esto (pero requieren que las preguntas y respuestas estén escritas en inglés).
Eliah Kagan
8
@EliahKagan Por el contrario, es muy importante publicar mensajes de error reales , y es preferible publicarlos en inglés porque eso es lo que la audiencia principal de este sitio puede reconocer y probar. (Y nunca, nunca publique un mensaje de error traducido de nuevo. Siempre copie y pegue, porque la redacción exacta, la puntuación, incluso el espacio pueden ser significativos).
Gilles

Respuestas:

74

export LC_ALL=Ces 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_ALLvariable:

unset LC_ALL
Eric Carvalho
fuente
13

función bash para terminal

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 ENpara 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, LANGUAGEpara evitar mal comportamiento de algunos programas.

Adaptándose a su idioma

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'
H.-Dirk Schmitt
fuente
¿Es necesario cambiar el script para otro idioma que no sea alemán (DE)? Busco una solución independiente del idioma nativo.
BuZZ-dEE
@ BuZZ-dEE: puede (y probablemente debería) adaptar fácilmente esto al desechar casey 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 -apara asegurarse de que la configuración regional solicitada esté realmente instalada.
bitmask
@ buzz-dee: ver respuesta actualizada
H.-Dirk Schmitt
7

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 .bashrcarchivo 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:

BuZZ-dEE
fuente
La configuración noLANG es suficiente para probar toda la salida.
bitmask el
@bitmask es esto: LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bash¿mejor?
BuZZ-dEE
2
En realidad, eso debería ser LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL.
bitmask
Solo LC_ALL = C bash funciona para mí.
liquide
5

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.
  • -Categoría específica de variables que comienzan con 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 global

La 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.

Gilles
fuente
¿No usas IDIOMA? No sé en qué sistema operativo estás, pero en Ubuntu LANGUAGE se usa de forma predeterminada todo el tiempo a través del instalador y varias GUI. ¿Qué errores son esos, por cierto? También leí la respuesta a la que se vinculó , e incluso si contiene información general útil, la recomendación simplemente no es un buen consejo en un escritorio Ubuntu.
Gunnar Hjalmarsson
@GunnarHjalmarsson El principal problema LANGUAGEes que tiene prioridad sobre LC_ALL, lo que causa errores porque los programas configuran LC_ALLresultados predecibles y luego se confunden porque no obtienen el resultado esperado.
Gilles
Bueno, las interfaces gráficas de usuario de Ubuntu establecen LANG y LANGUAGE de manera consistente (y LC_MESSAGES hereda de LANG), lo que debería evitar ese tipo de confusión. La razón por la que se establece LANGUAGE es que Language Support tiene una interfaz para configurar una lista de prioridades.
Gunnar Hjalmarsson el
@GunnarHjalmarsson lo sé. LANGUAGESin 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.
Gilles
Las respuestas aquí no son un lugar adecuado para debatir cuestiones de diseño. Tales discusiones se llevan a cabo mejor en, por ejemplo, ubuntu-devel- discusion . Para ser útil para los usuarios, realmente creo que una respuesta debe basarse en el diseño actual, si crees que es óptimo o no. Y tenga en cuenta que "algunas versiones" son todas versiones compatibles de escritorio de Ubuntu y derivados, posiblemente con la excepción de Kubuntu.
Gunnar Hjalmarsson
1

La forma más fácil es abrir el terminal presionando Alt + F2 y ejecutando este comando:

env LANGUAGE=en gnome-terminal
Gunnar Hjalmarsson
fuente
1

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.

https://help.ubuntu.com/community/Locale

rofrol
fuente
No sé por qué esta respuesta fue rechazada. Sí, podría usar alguna explicación más, pero a diferencia de la respuesta aceptada, muestra cómo hacerlo permanente y es más específico.
Xerus
0
  1. Haga clic en el ícono de ajustes a la izquierda (configuración del sistema en el panel de Unity)
  2. Haga clic en Soporte de idiomas
  3. Seleccionar formatos regionales
  4. Establezca su "Mostrar números, fechas y cantidad de moneda ..." en inglés.
  5. Cierre sesión y vuelva a iniciar sesión (¡obligatorio!)

Hecho.

Robin Hsu
fuente