Respuestas:
Hay varias variables de entorno disponibles para cambiar la configuración del idioma. Puede ver su configuración regional actual ejecutando el locale
comando. Para cambiar todas las configuraciones regionales a inglés, use LANG=C
. Esta C
configuració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=
LANGUAGE
es una excepción : GNU gettext da prioridad al LANGUAGE
valor, excepto si el LC_MESSAGES
valor ( efectivo) (típicamente establecido indirectamente a través de LANG
o LC_ALL
) es uno C
o (su sinónimo) POSIX
. También señalan que LANGUAGE
pasa 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
LANGUAGE
se 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.
LANGUAGE
si lo desea :)
LANGUAGE
en 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 es
para español.
GNU gettext servicios públicos basados dando prioridad a los no estándar LANGUAGE
variable de entorno [1]
sobre las variables de entorno de configuración regional definidos POSIX LC_ALL
, LC_MESSAGES
y LANG
(en ese orden).
Dado que LANGUAGE
se establece de manera predeterminada en los sistemas Ubuntu [2] , es decir, en una subcadena del LANG
valor que refleja una etiqueta de idioma simple (por ejemplo, es
para español) o una etiqueta de región de idioma (por ejemplo, de_DE
para la variante alemana de alemán), debe desarmar o anular LANGUAGE
para que los mensajes de un idioma diferente surtan efecto. [3]
LANGUAGE
Ejemplo : cambiar a es
mensajes 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 es
es suficiente, pero puede agregar un identificador de región (por ejemplo, es_AR
para 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).
LANGUAGE
y configurarLC_ALL
Esta solución alternativa no se define LANGUAGE
primero y luego usa la variable de entorno local POSIX LC_ALL
para 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_TIME
para los formatos de fecha / hora) y mediante la configuración (implícitamente) LC_MESSAGES
también informa a los programas que no son GNU del idioma deseado.
Tenga en cuenta cómo se LC_ALL
requiere 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_MESSSAGES
y 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 LANGUAGE
es una excepción : si el LC_MESSAGES
valor (efectivo) indirecto (típicamente establecido vía LANG
o LC_ALL
) es uno C
o (su sinónimo) POSIX
, ese valor se respeta, independientemente del valor de LANGUAGE
, Si alguna. Por el contrario, si el LC_MESSAGES
valor (efectivo) es cualquier otro lugar específico , LANGUAGE
tiene 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 LANGUAGE
que no debe establecerse de manera predeterminada, dado que, en su ausencia , se respeta el LC_MESSAGES
valor implícito por el LANG
valor (que determina el entorno local actual).
[3] También puede usar este enfoque para cambiar al inglés de [EE. UU.] Asignando uno LANGUAGE=C
o 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_utility
hace no trabajo (salidas de un mensaje en el entorno local actual), mientras que
LANGUAGE= LC_ALL=es_ES.UTF-8 no_such_utility
sí (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.
LANG
oLANG_ALL
no me funciona, todavía loLANGUAGE
es. Consulte ¿Por qué anular la variable de entorno LANG no cambia el idioma para mí?