28 votos

¿Dónde se establece la variable $LANG en Mac OS X?

He usado wget por primera vez después de instalar Lion OS X y he notado que ese wget se localizó a mi idioma nativo. Corriendo set en la terminal mostró que mi LANG representa mi idioma local. ¿Dónde puedo cambiar esto o hacer wget ¿Ignorar este escenario?

actualización

Esto es lo que locale me da:

LANG="lt_LT.UTF-8"
LC_COLLATE="lt_LT.UTF-8"
LC_CTYPE="lt_LT.UTF-8"
LC_MESSAGES="lt_LT.UTF-8"
LC_MONETARY="lt_LT.UTF-8"
LC_NUMERIC="lt_LT.UTF-8"
LC_TIME="lt_LT.UTF-8"
LC_ALL=

De ahí que toda la salida de los no parámetros (como los avisos y mensajes de depuración) esté en lituano. Ese es mi problema. Me gustaría volver al inglés.

Estoy usando zsh como mi concha de inicio de sesión.

1 votos

¿Cuál es exactamente el problema con wget ? ¿Y qué hace locale y es lo mismo que se espera de su selección de idiomas en el Lengua y texto ¿panel de preferencias del sistema?

28voto

Yasmine Mustafa Puntos 21

Por defecto, Terminal establece las variables del entorno de localización para que coincidan con el idioma y los formatos de hora/fecha/número actualmente seleccionados que utiliza Terminal, que se selecciona mediante

Preferencias del sistema > Idioma y texto

(Ese es el nombre de Lion. En los sistemas anteriores el nombre exacto del panel de preferencias puede variar).

Una solución temporal es arrastrar el inglés al principio de la lista de idiomas, luego abrir la Terminal, y luego mover el lituano de nuevo al principio. Entonces sólo la Terminal estará en inglés. Sin embargo, se reiniciará al lituano si usted sale y reinicia la Terminal.

Un enfoque persistente es decirle a la Terminal que no establezca las variables del entorno de la localidad, apagando

Terminal > Preferencias > Configuración > [perfil] > Avanzado > Configurar las variables del entorno de la localidad al inicio

Entonces la localización será por defecto "C" sin especificar el idioma, y la mayoría de los programas serán por defecto en inglés.

Tenga en cuenta que si lo apaga, algunos programas no sabrán qué terminal de codificación de caracteres está usando y asumirán que es sólo ASCII o ISO-Latin-1. Así que si Terminal está usando UTF-8 (el predeterminado), esos programas pueden o no comportarse como se desea.

Si se trata principalmente de wget Si no se puede utilizar el perfil de configuración predeterminado, le recomiendo que haga una copia del perfil de configuración predeterminado, desactive la configuración de la localización en su perfil personalizado y utilice ese perfil sólo cuando utilice wget para que pueda seguir utilizando el UTF-8 con total compatibilidad cuando utilice otros programas, utilizando la configuración predeterminada.

Como otros han mencionado, también puedes anular la configuración de localización inicial suministrada por Terminal en un inicio de shell script. Para zsh, ponlo en ~/.zshrc. Para bash, usa ~/.bashrc (y si aún no tienes uno, crea un perfil ~/.bash_profile que corra ~/.bashrc).

Véase x-man-page://1/locale para más información sobre cada uno de los valores del entorno local.

Sin embargo, si usted se limitara a unset LANG o ponerlo en "C", que normalmente se aplicaría a todos de sus shells y programas, mientras que la mayoría de las veces probablemente quiera usar UTF-8 y hacer que Terminal establezca las variables de localización para que coincidan, para obtener el mayor grado de cooperación, fidelidad y funcionalidad.

Por lo tanto, si va a seguir ese camino, le sugiero que escriba un código para editar, en lugar de reemplazar, los valores iniciales, de modo que conserve la información de codificación ("UTF-8") y simplemente fuerce el idioma al inglés, en lugar de poner las variables en "C".

Por ejemplo, esto funciona en zsh y bash:

# Replace Lithuanian with English
export LANG=${LANG/lt_LT/en_US}

Cuando LANG="lt_LT.UTF-8" esto lo cambiará a LANG="en_US.UTF-8" . No tengo wget disponible para probar esto, pero esto debería ser suficiente.

Hacerlo así significa que si cambias la preferencia de codificación de caracteres en Terminal, no anularás eso en el inicio del shell script.

1 votos

Bien hecho; para generalizar el LANG comando de redefinición: echo ${LANG/*./en_US.} sustituye el nombre de la cultura actual por en_US independientemente de lo que sea; trabaja en bash , ksh , zsh .

8voto

Oskar Puntos 1242

Está puesto aquí...

enter image description here

Si quieres más o menos opciones en el pulldown, dirígete a la Codificaciones para ver aún más de la recompensa.

4 votos

En os x es ~/.bash_profile, no bashrc. La gente se confunde mucho con esto al leer tutoriales en línea.

0 votos

Caramba, gracias por haberlo notado. Incluso fui a la página de código abierto y comprobé si apple había hecho cambios en gnu bash y aún así me equivoqué. (editando mi respuesta - gracias @the_great_monkey )

6 votos

La terminal crea shells de inicio de sesión, que ejecutan ~/.bash_profile. Sin embargo, la mayoría de las personalizaciones del usuario deben colocarse en ~/.bashrc para que también se apliquen a los shells que no son de inicio de sesión (por ejemplo, los sub-shells), y ~/.bash_profile debe ejecutar ~/.bashrc para que se aplique a los shells de inicio de sesión. ~/.bash_profile está generalmente vacío y sólo contiene código específicamente para los shells de inicio de sesión de nivel superior que el usuario no quiere ejecutar para los sub-shells.

3voto

EOL Puntos 24342

Resolví este problema estableciendo el idioma en mi archivo .profile que se carga cada vez que inicio una terminal.

export LANG="en_US.UTF-8"
export LC_ALL="POSIX"

7 votos

LC_ALL anula LANG por lo que su primer comando no tendrá ningún efecto.

2 votos

También, POSIX equivale a C y que no se adapta a Unicode en absoluto.

1voto

dmpogo Puntos 1

Basado más en la experiencia de Linux, si no quieres cambiar tu localización completamente con LC_LANG, pero te gustaría tener sólo mensajes del sistema en inglés, deberías establecer

LC_COLLATE=C    (to have standard sorting in ls, etc)
LC_CTYPE=en_US.UTF-8

0 votos

Es el LC_MESSAGES que controla en qué idioma deben salir los mensajes (si está instalado).

0voto

XiangXing Puntos 1

Usando un servidor debian en francés y un cliente macsox bash, "sólo" tuve que añadir esto a mi .bash_profile en el directorio de usuarios de macosx :

exportar LANG=fr_FR.UTF-8

Resuelto.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X