Le impostazioni internazionali non sono corrette. Come posso resettarli?


43

Ho un problema con le impostazioni locali.
La sequenza di confronto in nautiluse altri programmi è cambiata.
Ottengo errori di localizzazione che appaiono nel terminale quando avvio un'app GUI.

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

Il localecomando produce messaggi di errore

    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=

Come suggerito nella domanda di askubuntu , ho eseguito i seguenti comandi, ma non sono state apportate modifiche.

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

Ho anche provato il suggerimento nella domanda di Askubuntu ... anche nessun cambiamento.

    apt-get install --reinstall locales

Penso che sia iniziato quando ho installato e disinstallato temporaneamente l'Editor del metodo di input in lingua urdu tramite IBus.. è certamente successo lo stesso giorno.

Forse è legato a IBus, ma non ho mai avuto problemi con questo prima.

  • Il sistema operativo è 10.04

Risposte:


27

Sono riuscito a far funzionare le cose "normalmente" di nuovo.

Dopo aver provato molte reinstallazioni di pacchetti ecc., Inclusa la rimozione completa di IBus (tutto senza alcun effetto), ho iniziato a pensare che potrebbe essere causato da un'impostazione di configurazione che la reinstallazione non modifica.

Avevo notato che l'output da localeera piuttosto privo di assegnazioni UTF-8, quindi l'ho verificato in una VM installata di recente ... tutte le voci di LC_ * (tranne LC_ALL, che sovrascrive tutte le altre) sono state impostate con il .UTF-8suffisso. quindi ho impostato manualmente i valori LC_ * come mostrato di seguito.

Probabilmente avrei potuto semplicemente usarlo LC_ALL="en_AU.UTF-8", ma nel leggere questo, ho scoperto come personalizzare il formato della data e dell'ora del sistema e LC_ALLignorerei le mie impostazioni personalizzate.

Non so se ho usato il metodo più appropriato, ma funziona!

Il file modificato è: /etc/default/locale

  • Questo mostra i contenuti prima della mod:

    LANG="en_AU.UTF-8"
    LANGUAGE="en_AU:en"
    LC_MESSAGES="en_AU.UTF-8"
    
  • Questo mostra i contenuti dopo la 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"
    

Lo stesso file nella VM conteneva solo questa riga:

    LANG="en_AU.UTF-8" 


grazie per il tuo post. Per la cronaca, ho dovuto riavviare il mio sistema affinché la correzione funzionasse. (forse avrebbe potuto usare emacs eval-buffer?)
David LeBauer

19

Ridefinire le impostazioni locali e riconfigurare potrebbe essere sufficiente per risolvere il problema:

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

Quando corri sudo dpkg-reconfigure localespuoi selezionare le impostazioni locali che desideri facendo clic su spacebare spostandoti con e prima di colpire Enter.


Forse vale la pena ricordare che selezioni le lingue che desideri con la barra spaziatrice.
Daniel Kmak,

@Daniel Non capisco: barra spaziatrice?
Guillaume Vincent,

1
Durante l'esecuzione dpkg-reconfigureottieni l'elenco con le caselle di controllo e per selezionare la lingua devi usare la barra spaziatrice. Non ci sono tali informazioni nel programma console, quindi ho pensato che sarebbe stato utile scriverle sotto la risposta. Non sapevo come selezionare queste lingue.
Daniel Kmak,

1
@ Daniele fatto :)
Guillaume Vincent

15

Ho anche riscontrato questo problema, come vedi, sei LC_ALLvuoto. Ho fatto come segue e mi aiuta:

$ sudo vim /etc/environment

e impostare LC_ALLsu qualcosa del genere en_US.UTF-8, il mio è:

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

quindi riavviare ed eseguire localee dovrebbe essere qualcosa del tipo:

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

Questa soluzione funziona bene su Ubuntu 12.04 LTS preciso
speciousfool

L'impostazione LC_ALLè scoraggiata. "L'uso di LC_ALL è fortemente sconsigliato in quanto sovrascrive tutto. Utilizzalo solo durante i test e non impostarlo mai in un file di avvio." wiki.debian.org/Locale
gertvdijk

4

Se si è connessi in remoto alla macchina tramite ssh (ad es. Da un dispositivo macosx) è necessario impostare queste variabili sulla macchina da cui ci si sta connettendo

aggiungi quanto segue 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"

1
È un errore noto durante la connessione da OS X?
MindTooth,

non
ho

2

Voglio solo aggiungere che avevo bisogno di modificare anche il mio profilo home:

gedit ~/.profile

Quindi nel tuo caso sembrerebbe:

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

Esci + Accedi. E tutto è come previsto.


Avevo bisogno exportall'inizio di ogni riga e l'ho inserito ~/.bashrc.
Sparhawk,

2

Ho avuto lo stesso problema per diversi mesi, molti strumenti software avvisavano delle impostazioni internazionali non funzionanti e alcuni addirittura si rifiutavano di funzionare. Voglio usare la lingua inglese, ma le impostazioni monetarie e numeriche svedesi.

Quello che alla fine ha funzionato per me è stato modificare /etc/default/localedove ho rimosso tutto in quel file. Ho quindi avviato l'installazione della lingua di Unity (Settings -> Language Support), impostato tutto (Ubuntu voleva installare alcuni componenti mancanti) e "Apply System-wide"ho premuto quando ho finito.

Il mio /etc/default/localeora sembra così.

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 = "it"
LANG = "en_US.UTF-8"

La grande differenza tra questo e il mio file originale è LANGUAGE="en".


Il mio salvavita ...
John Joe,

2

È passato un po 'di tempo da quando questo è stato pubblicato, ma recentemente ho avuto problemi con le variabili "locali" e nessuna risposta mi ha dato alcun risultato. Forse la mia esperienza potrebbe aiutare qualcun altro.

La mia variabile LANG era vuota e questo mi dava problemi.

$locale

Produzione:

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

Ho provato alcuni dei comandi come:

sudo locale-gen
sudo dpkg-reconfigure locales

Senza successo. Ho provato a modificare il file / etc / default / locale e ho scoperto che era già OK:

$cat /etc/default/locale

Produzione:

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"

Anche il mio file .pam_environment sembrava essere corretto:

$cat .pam_environment

Produzione:

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

Non voglio aggiungere altro materiale al profilo o bash dei file, soprattutto perché, sebbene possa risolvere il problema, non ne conosco la causa e questo mi ha infastidito.

Alla fine mi chiedevo se qualcosa stava già sovrascrivendo le variabili "locale" e ho eseguito il comando successivo:

$cat .bashrc | grep LANG

Produzione:

unset LANG

Quindi ho trovato due righe sul mio file .bashrc in cui la causa (non sto incollando l'intero file):

unset LANG
export LC_ALL=POSIX

Non so come o quando quelle righe siano finite nel mio file bash, ma sono completamente sicuro di non averle scritte, forse il mio .bashrc è stato sostituito quando stavo lavorando con alcune cose di sviluppo web, davvero lo so, ma dato che so che questo non era intenzionale e ci sono persone là fuori che non hanno idea di cosa stia causando un comportamento scorretto "locale", forse questo potrebbe aiutarli. Comunque commentare quelle righe e un riavvio ha risolto il problema per me. Qui ho risposto alla stessa domanda incentrata sui reclami sublimeT3 sulla variabile LANG .


1

Sembra in qualche modo un aggiornamento delle fritture locali. La correzione che ho trovato è stata quella di disconnettersi, cambiare la lingua selezionata prima di accedere e di riconnettersi.

Potrebbe anche aiutare a reinstallare le impostazioni locali in sinaptico, anche se non posso confermare che questo è ciò che l'ha risolto per me, penso che si stesse disconnettendo o qualcosa del genere.


Riaccedere e cambiare lingua. Non vedo alcun modo per cambiare la lingua all'accesso .. Vedo un testo che menziona il cambio di lingua, ma non esiste alcuna opzione (pulsanti o simili) .. forse è perché ho solo l'inglese australiano abilitato .... e ho eseguito tutti i comandi sopra .. quindi è ancora un mistero al momento ...
Peter.O

@ red.bear: prova a installare language-pack-ene language-support-enpoi ripeti il ​​procedimento sopra.
RolandiXor

1

Ho provato a modificare il file locale e scegliere lingue diverse al login.

Filtrare i pacchetti rotti con Synaptic e rimuovere completamente i 9 pacchetti offensivi funzionati per me (libreoffice e python uno).

Ma non sono in grado di installare LibreOffice senza apparentemente corrompere il gestore dei pacchetti. Tuttavia, viene installato.

Sono l'11.04 i386. Disclaimer: si è verificata un'interruzione di corrente durante l'ultima parte della mia installazione mentre Ubuntu stava scaricando gli aggiornamenti.


1

Ho avuto lo stesso problema, ma andare su Sistema> Amministrazione> Supporto lingua potrebbe risolvere il tuo problema perché potrebbe chiederti di installare alcuni pacchetti e poi andrà bene !! Ha funzionato per me quindi immagino che farà lo stesso per te !!


0

Correre

export LC_ALL="zh_CN.utf8"
ibus-setup

e selezionare una delle opzioni per il metodo di input desiderato.


0

Ho avuto un problema simile (più evidente in Thunderbird) all'esempio en_AU qui - ma vengo da en_NZ - e dopo alcuni tentativi ed errori con Ubuntu 17.10 la mia soluzione era aggiornare ~ / .pam_environment, sostituendo tutte le altre voci ( principalmente en_AU e en_US) con en_NZ, quindi riavvio.

Un peccato che non si possa semplicemente impostare la propria locale e fare in modo che ciò che pretende di fare - la maggior parte delusa dal fatto che l'esecuzione di dpkg-configure locales in realtà non sembri fare nulla di utile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.