Respuestas:
Hay varias variables de entorno disponibles para cambiar la configuración del idioma. Puede ver su configuración regional actual ejecutando el localecomando. Para cambiar todas las configuraciones regionales a inglés, use LANG=C. Esta Cconfiguración regional siempre está disponible sin instalar paquetes de idiomas adicionales. (Para cambiar temporalmente a configuraciones regionales que no estén en inglés, consulte la publicación de @ mklement0 ).
Ejemplos:
Ejecutar un comando con la configuración de idioma predeterminada e imprimir la configuración regional actual:
$ /nonexistent
bash: /nonexistent: Bestand of map bestaat niet
$ locale
LANG=nl_NL.UTF-8
LANGUAGE=
LC_CTYPE="nl_NL.UTF-8"
LC_NUMERIC="nl_NL.UTF-8"
LC_TIME="nl_NL.UTF-8"
LC_COLLATE="nl_NL.UTF-8"
LC_MONETARY="nl_NL.UTF-8"
LC_MESSAGES="nl_NL.UTF-8"
LC_PAPER="nl_NL.UTF-8"
LC_NAME="nl_NL.UTF-8"
LC_ADDRESS="nl_NL.UTF-8"
LC_TELEPHONE="nl_NL.UTF-8"
LC_MEASUREMENT="nl_NL.UTF-8"
LC_IDENTIFICATION="nl_NL.UTF-8"
LC_ALL=
Anule temporalmente el idioma de un programa y demuestre que es realmente temporal:
$ LANG=C ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ ls /nonexistent
ls: kan geen toegang krijgen tot /nonexistent: Bestand of map bestaat niet
Cambie la configuración regional para todos los comandos ejecutados en el shell actual e incluya pruebas nuevamente:
$ LANG=C
$ ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ locale
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
LANGUAGEes una excepción : GNU gettext da prioridad al LANGUAGEvalor, excepto si el LC_MESSAGESvalor ( efectivo) (típicamente establecido indirectamente a través de LANGo LC_ALL) es uno Co (su sinónimo) POSIX. También señalan que LANGUAGEpasa a ser desactivada en esta respuesta, mientras que se establece de forma predeterminada, y si se establece, debe invalidar que para cambiar a una de entorno local específico lenguaje (en contraposición a "C" / "POSIX"), la cual es lo que encontraste
LANGUAGEse anule o se anule explícitamente. Dado el título genérico de la pregunta, es probable que las personas encuentren esta respuesta buscando cambiar también a un idioma que no sea inglés, así que considere agregar esta información a su respuesta.
LANGUAGEsi lo desea :)
LANGUAGEen su salida de muestra a nl, que es el valor predeterminado real cuando su configuración regional es nl_NL.UTF-8.
La útil respuesta de Lekensteyn funciona muy bien si desea cambiar al inglés de EE. UU. A pedido, como lo solicitó el OP, pero si desea cambiar a un idioma diferente a pedido , se necesita más trabajo.
Antes de comenzar, debe instalar tablas de mensajes con sudo apt-get install language-pack-<lang-tag>, donde <lang-tag>hay una subetiqueta de idioma RTF 5646 simple , como espara español.
GNU gettext servicios públicos basados dando prioridad a los no estándar LANGUAGEvariable de entorno [1]
sobre las variables de entorno de configuración regional definidos POSIX LC_ALL, LC_MESSAGESy LANG(en ese orden).
Dado que LANGUAGEse establece de manera predeterminada en los sistemas Ubuntu [2] , es decir, en una subcadena del LANGvalor que refleja una etiqueta de idioma simple (por ejemplo, espara español) o una etiqueta de región de idioma (por ejemplo, de_DEpara la variante alemana de alemán), debe desarmar o anular LANGUAGEpara que los mensajes de un idioma diferente surtan efecto. [3]
LANGUAGEEjemplo : cambiar a esmensajes en español ( ) ad-hoc:
$ LANGUAGE=es ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
Nota : Una etiqueta de idioma simple como eses suficiente, pero puede agregar un identificador de región (por ejemplo, es_ARpara Argentina) e incluso un sufijo de conjunto de caracteres (por ejemplo, es_AR.UTF-8).
Sin embargo, los mensajes localizados solo pueden existir a nivel de idioma , y la alternativa es usar mensajes que coincidan con la parte del idioma ( es, en este caso).
LANGUAGEy configurarLC_ALLEsta solución alternativa no se define LANGUAGE primero y luego usa la variable de entorno local POSIX LC_ALLpara establecer implícitamente LC_MESSAGES[4] :
$ LANGUAGE= LC_ALL=es_ES.UTF-8 ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
Esta solución tiene la ventaja de configurar todos los aspectos de localización en la configuración regional especificada (como LC_TIMEpara los formatos de fecha / hora) y mediante la configuración (implícitamente) LC_MESSAGEStambién informa a los programas que no son GNU del idioma deseado.
Tenga en cuenta cómo se LC_ALLrequiere que el nombre de configuración regional exacto y completo , incluido el sufijo charset, sea efectivo ( es_ES.UTF-8) (a diferencia de LANGUAGE, para lo cual una etiqueta de idioma simple es suficiente (like es)). Lo mismo se aplica a la configuración LC_MESSSAGESy LANG. La especificación de un nombre de configuración regional no válido / no instalado provoca el retroceso a la configuración regional POSIX y, por lo tanto, al inglés de EE. UU.
[1] Las razones por las que la respuesta de Lekensteyn funciona incluso sin desarmar / anular LANGUAGEes una excepción : si el LC_MESSAGESvalor (efectivo) indirecto (típicamente establecido vía LANGo LC_ALL) es uno Co (su sinónimo) POSIX, ese valor se respeta, independientemente del valor de LANGUAGE, Si alguna. Por el contrario, si el LC_MESSAGESvalor (efectivo) es cualquier otro lugar específico , LANGUAGEtiene prioridad.
[2] Esto se aplica a Ubuntu propiamente dicho , pero no necesariamente a otros sabores ; Lekensteyn afirma que Kubuntu no se establece LANGUAGE.
Podría decirse LANGUAGEque no debe establecerse de manera predeterminada, dado que, en su ausencia , se respeta el LC_MESSAGESvalor implícito por el LANGvalor (que determina el entorno local actual).
[3] También puede usar este enfoque para cambiar al inglés de [EE. UU.] Asignando uno LANGUAGE=Co LANGUAGE=POSIX(como alternativa a, LANG=C/ LANG=POSIX), aunque no estoy claro si eso se reconoce activamente o simplemente un mecanismo alternativo , dado que estos valores no no comience con una etiqueta de idioma ; Quizás la mejor opción sería en_US.
[4] Hay un borde caso en que este enfoque no funciona: intentar invocar un archivo ejecutable con un camino - ya sea relativa o absoluta - no se conecta con el idioma elegido, mientras que un mero nombre de archivo hace:
LANGUAGE= LC_ALL=es_ES.UTF-8 /path/to/no_such_utilityhace no trabajo (salidas de un mensaje en el entorno local actual), mientras que
LANGUAGE= LC_ALL=es_ES.UTF-8 no_such_utilitysí (genera un mensaje de error en español).
Si alguien sabe por qué y si hay una buena razón para esto, háganoslo saber.
LANGoLANG_ALLno me funciona, todavía loLANGUAGEes. Consulte ¿Por qué anular la variable de entorno LANG no cambia el idioma para mí?