La configuración regional no es correcta. ¿Cómo puedo restablecerlos?

43

Tengo un problema local.
La secuencia de clasificación en nautilusy otros programas ha cambiado.
Aparecen errores de configuración regional en el terminal cuando inicio una aplicación GUI.

    Gtk-WARNING **: Locale not supported by C library.
        Using the fallback 'C' locale.

El localecomando produce mensajes de error.

    locale: Cannot set LC_CTYPE to default locale: No such file or directory
    locale: Cannot set LC_ALL to default locale: No such file or directory
    LANG=en_AU
    LANGUAGE=en_AU:en
    LC_CTYPE="en_AU"
    LC_NUMERIC="en_AU"
    LC_TIME="en_AU"
    LC_COLLATE=en_AU.UTF-8
    LC_MONETARY="en_AU"
    LC_MESSAGES=en_AU.UTF-8
    LC_PAPER="en_AU"
    LC_NAME="en_AU"
    LC_ADDRESS="en_AU"
    LC_TELEPHONE="en_AU"
    LC_MEASUREMENT="en_AU"
    LC_IDENTIFICATION="en_AU"
    LC_ALL=

Como se sugiere en la pregunta de askubuntu , ejecuté los siguientes comandos, pero no hubo cambios.

    sudo apt-get install language-pack-en-base
    sudo dpkg-reconfigure locales

También probé la sugerencia en la pregunta askubuntu ... tampoco hubo cambios.

    apt-get install --reinstall locales

Yo creo que comenzó cuando he instalado y desinstalado temporalmente el idioma de entrada Urdu Editor de métodos a través IBus.. ciertamente ocurrió en el mismo día.

Quizás esté relacionado con IBus, pero no he tenido ningún problema con esto antes.

  • El sistema operativo es 10.04
Peter.O
fuente

Respuestas:

27

Me las he arreglado para que las cosas vuelvan a funcionar "normalmente".

Después de probar muchas reinstalaciones de paquetes, etc., incluida la eliminación completa de IBus (todo sin ningún efecto), comencé a pensar que puede ser causado por una configuración que la reinstalación no modifica.

Me di cuenta de que el resultado de las localeasignaciones de UTF-8 estaba bastante desprovisto, así que verifiqué esto en una VM instalada recientemente ... todas las entradas de LC_ * (excepto LC_ALL, que anula todas las demás) se configuraron con el .UTF-8sufijo. así que configuré manualmente los valores LC_ * como se muestra a continuación.

Probablemente podría haberlo usado LC_ALL="en_AU.UTF-8", pero al leer sobre esto, descubrí cómo personalizar el formato de fecha y hora del sistema , y LC_ALLanularía mi configuración personalizada.

No sé si he usado el método más apropiado, ¡pero funciona!

El archivo modificado es: /etc/default/locale

  • Esto muestra los contenidos antes del mod:

    LANG="en_AU.UTF-8"
    LANGUAGE="en_AU:en"
    LC_MESSAGES="en_AU.UTF-8"
    
  • Esto muestra el contenido después del mod:

    LANG="en_AU.UTF-8"
    LANGUAGE="en_AU:en"
    LC_CTYPE="en_AU.UTF-8"
    LC_NUMERIC="en_AU.UTF-8"
    LC_TIME="en_AU.UTF-8"
    LC_COLLATE=en_AU.UTF-8
    LC_MONETARY="en_AU.UTF-8"
    LC_MESSAGES=en_AU.UTF-8
    LC_PAPER="en_AU.UTF-8"
    LC_NAME="en_AU.UTF-8"
    LC_ADDRESS="en_AU.UTF-8"
    LC_TELEPHONE="en_AU.UTF-8"
    LC_MEASUREMENT="en_AU.UTF-8"
    LC_IDENTIFICATION="en_AU.UTF-8"
    

El mismo archivo en la VM contenía solo esta línea:

    LANG="en_AU.UTF-8" 

Peter.O
fuente
gracias por tu publicación Para el registro, tuve que reiniciar mi sistema para que la solución funcione. (¿quizás podría haber usado emacs eval-buffer?)
David LeBauer
19

Redefinir las configuraciones regionales y reconfigurar puede ser suficiente para solucionar el problema:

sudo locale-gen en_AU.UTF-8
sudo dpkg-reconfigure locales

Cuando corres sudo dpkg-reconfigure locales, puedes seleccionar la configuración regional que desees haciendo clic spacebary moviéndote con y antes de presionar Enter.

Guillaume Vincent
fuente
Quizás valga la pena mencionar que seleccionas los idiomas que deseas con la barra espaciadora.
Daniel Kmak
@Daniel No entiendo: barra espaciadora?
Guillaume Vincent
1
Al ejecutar dpkg-reconfigure, obtienes una lista con casillas de verificación y para seleccionar el idioma tienes que usar la barra espaciadora. No existe dicha información en el programa de consola, así que pensé que sería útil escribirla debajo de la respuesta. No sabía cómo seleccionar estos idiomas.
Daniel Kmak
1
@Daniel hecho :)
Guillaume Vincent
15

También me encontré con este problema, como ves, tu LC_ALLestá vacío. Hice lo siguiente y ayuda:

$ sudo vim /etc/environment

y establecer el LC_ALLalgo así en_US.UTF-8, el mío es:

LANG="en_US.UTF-8"
LC_MESSAGES="C"
LC_ALL="en_US.UTF-8"

luego reinicie y ejecute locale, y debería ser algo como:

LANG=zh_CN.utf8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
McKelvin
fuente
Esta solución funciona bien en Ubuntu 12.04 LTS precisa
speciousfool
Configuración LC_ALLno se recomienda. "Se desaconseja el uso de LC_ALL, ya que anula todo. Úselo solo durante las pruebas y nunca lo configure en un archivo de inicio". wiki.debian.org/Locale
gertvdijk
4

Si está conectado remotamente a la máquina a través de ssh (por ejemplo, desde un dispositivo macosx), debe configurar estas variables en la máquina desde la que se está conectando

agregue lo siguiente a ~ / .bash_profile

#fix for locale issues when connecting to ubuntu servers
export LANG="en_US.utf8"
export LANGUAGE="en_US.utf8"
export LC_ALL="en_US.utf8"
Somatik
fuente
1
¿Es este un error conocido cuando se conecta desde OS X?
MindTooth
no
tengo
2

Solo quiero agregar que también necesitaba editar el perfil de mi casa:

gedit ~/.profile

Entonces en su caso se vería así:

...
LANG="en_AU.UTF-8"
LANGUAGE="en_AU:en"

Cerrar sesión + Iniciar sesión. Y todo es como se esperaba.

Aas
fuente
Necesitaba exportal comienzo de cada línea, y lo puse ~/.bashrc.
Sparhawk
2

Tuve el mismo problema durante varios meses, muchas herramientas de software advirtieron sobre configuraciones de configuración regional dañadas, y algunas incluso se negaron a ejecutarse. Quiero usar el idioma inglés, pero la configuración monetaria y numérica sueca.

Lo que finalmente funcionó para mí fue editar /etc/default/localedonde eliminé todo en ese archivo. Luego comencé la configuración del idioma de Unity (Settings -> Language Support), configuré todo (Ubuntu quería instalar algunos componentes faltantes) y presioné "Apply System-wide"cuando terminé.

Mi /etc/default/localeahora se ve así.

LC_NUMERIC = "sv_SE.UTF-8"
LC_TIME = "sv_SE.UTF-8"
LC_MONETARY = "sv_SE.UTF-8"
LC_PAPER = "sv_SE.UTF-8"
LC_IDENTIFICATION = "sv_SE.UTF-8"
LC_NAME = "sv_SE.UTF-8"
LC_ADDRESS = "sv_SE.UTF-8"
LC_TELEPHONE = "sv_SE.UTF-8"
LC_MEASUREMENT = "sv_SE.UTF-8"
LANGUAGE = "en"
LANG = "en_US.UTF-8"

La gran diferencia entre este y mi archivo original es LANGUAGE="en".

David A
fuente
Mi salvavidas ...
John Joe
2

Ha pasado un tiempo desde que esto se publicó, pero recientemente tuve problemas con las variables de "configuración regional" y ninguna respuesta me dio ningún resultado. Quizás mi propia experiencia podría ayudar a alguien más.

Mi variable LANG estaba vacía, y esto me estaba dando problemas.

$locale

Salida:

LANG=
LANGUAGE=en_US
LC_CTYPE=POSIX
LC_NUMERIC=POSIX
LC_TIME=POSIX
LC_COLLATE=POSIX
LC_MONETARY=POSIX
LC_MESSAGES=POSIX
LC_PAPER=POSIX
LC_NAME=POSIX
LC_ADDRESS=POSIX
LC_TELEPHONE=POSIX
LC_MEASUREMENT=POSIX
LC_IDENTIFICATION=POSIX
LC_ALL=POSIX

Intenté algunos de los comandos como:

sudo locale-gen
sudo dpkg-reconfigure locales

Sin éxito Intenté editar el / etc / default / locale y descubrí que ya estaba bien:

$cat /etc/default/locale

Salida:

LANG=en_US.UTF-8
LC_NUMERIC="es_CO.UTF-8"
LC_TIME="es_CO.UTF-8"
LC_MONETARY="es_CO.UTF-8"
LC_PAPER="es_CO.UTF-8"
LC_NAME="es_CO.UTF-8"
LC_ADDRESS="es_CO.UTF-8"
LC_TELEPHONE="es_CO.UTF-8"
LC_MEASUREMENT="es_CO.UTF-8"
LC_IDENTIFICATION="es_CO.UTF-8"

También mi archivo .pam_environment parecía ser correcto:

$cat .pam_environment

Salida:

LANGUAGE=en_US:en
LANG=en_US.UTF-8
LC_NUMERIC=es_CO.UTF-8
LC_TIME=es_CO.UTF-8
LC_MONETARY=es_CO.UTF-8
LC_PAPER=es_CO.UTF-8
LC_NAME=es_CO.UTF-8
LC_ADDRESS=es_CO.UTF-8
LC_TELEPHONE=es_CO.UTF-8
LC_MEASUREMENT=es_CO.UTF-8
LC_IDENTIFICATION=es_CO.UTF-8
PAPERSIZE=letter

No quiero agregar cosas adicionales a los archivos de perfil o bash, principalmente porque, aunque podría resolver el problema, no sabría la causa, y eso me molestó.

Finalmente me pregunté si algo ya estaba anulando las variables "locale" y ejecuté el siguiente comando:

$cat .bashrc | grep LANG

Salida:

unset LANG

Entonces encontré dos líneas en mi archivo .bashrc que eran la causa (no estoy pegando todo el archivo):

unset LANG
export LC_ALL=POSIX

No sé cómo o cuándo esas líneas terminaron en mi archivo bash, pero estoy completamente seguro de que no las escribí, tal vez mi .bashrc fue reemplazado cuando estaba trabajando con algunas cosas de desarrollo web, realmente no No lo sé, pero como sé que esto no fue intencional y hay personas por ahí que no tienen idea de lo que está causando el mal comportamiento "local", tal vez esto podría ayudarlos. De todos modos, comentar esas líneas y reiniciar me resolvió el problema. Aquí respondí la misma pregunta centrada en las quejas sublimeT3 sobre la variable LANG .

smajtkst
fuente
1

Parece una actualización de locales fritos de alguna manera. La solución que encontré fue cerrar sesión, cambiar el idioma seleccionado antes de iniciar sesión e iniciar sesión nuevamente.

También podría ayudar a reinstalar las configuraciones regionales en sináptico, aunque no puedo confirmar que esto sea lo que me solucionó, creo que estaba cerrando sesión o algo así.

RolandiXor
fuente
Volver a iniciar sesión y cambiar el idioma. No veo ninguna forma real de cambiar el idioma al iniciar sesión ... Veo texto que menciona el cambio de idioma, pero no hay ninguna opción (botones o similares) ... tal vez es porque solo tengo habilitado el inglés australiano ... y he ejecutado todos los comandos anteriores ... así que todavía es un misterio en este momento ...
Peter.O
@ red.bear: intente instalar language-pack-eny language-support-enluego repita el proceso anterior.
RolandiXor
1

Intenté editar el archivo de configuración regional y elegir diferentes idiomas al iniciar sesión.

Filtrar paquetes rotos con Synaptic y eliminar por completo los 9 paquetes ofensivos me funcionó (libreoffice y python uno).

Pero no puedo instalar LibreOffice sin aparentemente dañar el administrador de paquetes. Sin embargo, se instala.

Estoy en 11.04 i386. Descargo de responsabilidad: hubo una falla de energía durante la última parte de mi instalación, ya que Ubuntu estaba descargando actualizaciones.

marajit
fuente
1

Tuve el mismo problema, pero ir a Sistema> Administración> Soporte de idiomas puede resolver su problema porque puede pedirle que instale algunos paquetes y ¡entonces estará bien! ¡Funcionó para mí, así que supongo que te hará lo mismo!

Nickolas Pylarinos
fuente
0

correr

export LC_ALL="zh_CN.utf8"
ibus-setup

y seleccione una de las opciones para el método de entrada que desee.

más allá
fuente
0

Tuve un problema similar (más notable en Thunderbird) con el ejemplo en_AU aquí, pero soy de en_NZ, y después de un ensayo y error con Ubuntu 17.10, mi solución fue actualizar ~ / .pam_environment, reemplazando todas las demás entradas ( principalmente en_AU y en_US) con en_NZ, luego reiniciando.

Es una pena que no pueda simplemente configurar su configuración regional y hacer que haga lo que dice hacer; la mayoría decepcionado de que ejecutar configuraciones regionales dpkg-configure en realidad no parece hacer nada útil.

BlakJak
fuente