Come posso risolvere il mio problema di localizzazione?

454

Ricevo questo messaggio ogni volta che faccio qualcosa come avviare o interrompere un servizio.

perl: warning: Setting locale failed.   
perl: warning: Please check that your locale settings:   
        LANGUAGE = "en_US:en",   
        LC_ALL = (unset),   
        LC_MESSAGES = "en_US.UTF-8",   
        LANG = "en_US.UTF-8"   
    are supported and installed on your system.   
perl: warning: Falling back to the standard locale ("C").   
locale: Cannot set LC_CTYPE to default locale: No such file or directory   
locale: Cannot set LC_MESSAGES to default locale: No such file or directory   
locale: Cannot set LC_ALL to default locale: No such file or directory   
(Reading database ... 21173 files and directories currently installed.)  
Removing bind9 ...  
 * Stopping domain name service... bind9                                        [ OK ]
Processing triggers for man-db ...   
locale: Cannot set LC_CTYPE to default locale: No such file or directory   
locale: Cannot set LC_MESSAGES to default locale: No such file or directory   
locale: Cannot set LC_ALL to default locale: No such file or directory   

Come posso risolvere questo errore?

    
posta HackToHell 11.07.2012 - 16:08

19 risposte

464

Prima esecuzione locale per elencare le impostazioni locali attualmente definite per l'account utente corrente:

$ locale
LANG=C
LANGUAGE=
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE=fi_FI.UTF-8
LC_MONETARY="C"
LC_MESSAGES=fi_FI.UTF-8
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

Quindi genera le impostazioni locali mancanti e riconfigura le impostazioni locali per prendere nota:

$ sudo locale-gen "en_US.UTF-8"
Generating locales...
  en_US.UTF-8... done
Generation complete.

$ sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

Ora non vedrai più alcun errore!

    
risposta data Otto Kekäläinen 10.12.2012 - 13:45
334

Nulla di quanto suggerito sopra ha funzionato nel mio caso (Ubuntu Server 12.04LTS). Ciò che alla fine ha aiutato stava inserendo il file /etc/environment :

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

Per qualche motivo mancava. Le uscite per le impostazioni internazionali e altri comandi sono apparse come se le variabili fossero state definite correttamente. In altre parole, non dare per scontato che tutte le cose di base siano dichiarate dove dovrebbero essere dichiarate.

    
risposta data Marcin 16.12.2012 - 05:11
139

Dovrebbero scomparire dopo aver pubblicato:

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

dpkg-reconfigure riconfigura i pacchetti dopo che sono già stati        installato. Passa i nomi di un pacchetto o di pacchetti da riconfigurare.        Richiederà domande di configurazione, proprio come quando era il pacchetto        prima installato.

    
risposta data Rinzwind 11.07.2012 - 16:19
106

Aggiungi il seguente al tuo file .bashrc (supponendo che tu stia usando bash)

export LC_ALL="en_US.UTF-8"
    
risposta data ratz 08.11.2012 - 10:42
87

Questo è un problema comune se ci si connette da remoto, quindi la soluzione è di non inoltrare le proprie impostazioni internazionali. Modifica /etc/ssh/ssh_config e commenta SendEnv LANG LC_* riga.

    
risposta data user249697 01.10.2014 - 02:45
62

Esiste un comando per questo:

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

Aggiorna /etc/default/locale con i valori forniti.

    
risposta data sgtpep 01.08.2014 - 13:51
29

Ciò che ha funzionato per me il 12.10 era questo:

apt-get install language-pack-en-base  

Questo era dopo che dpkg-reconfigure locales non ha prodotto risultati.

    
risposta data George Answerology 28.04.2013 - 04:01
16

Non dimenticare di uscire dalla sessione SSH (o dal tuo X11) uscendo e ricollegandosi nuovamente. Tutti questi suggerimenti non hanno funzionato per me a meno che non avessi effettuato il login ....

    
risposta data Michael R. Hines 26.09.2014 - 08:51
11

Per Ubuntu 12.10 nessuno dei precedenti ha funzionato tranne la soluzione ratzs. Ti consiglio di aggiungere questo al tuo file /etc/bash.bashrc:

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"
    
risposta data Lovemore Nalube 27.03.2013 - 04:19
11

Ero bloccato in uno stato strano in cui la mia macchina locale è impostata su es e quindi la macchina remota (tramite vagrant ) era stata sottoposta a provisioning in uno stato non gestito. Pertanto, ho dovuto utilizzare il manuale export= solo per facilitare il successo di dpkg-reconfigure . Quindi il sistema va bene.

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales
    
risposta data charneykaye 22.03.2016 - 19:02
9

Ho scritto uno script bash per correggere sopra problema. Le risposte di cui sopra sono utili ma impostando le variabili locali semplicemente esportando i valori nella variabile di shell funzionerà solo per una sessione. Ho risolto questo problema in modo permanente esportando le variabili locali nel file .bash_profile. Puoi anche utilizzare /etc/profile file invece di .bash_profile .

echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile

Non dimenticare di source .bash_profile e segui script in una facile configurazione.

    
risposta data Ajeet Khan 27.02.2016 - 20:26
8

Puoi provare:

export LANGUAGE=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
export LC_NUMERIC=ru_RU.UTF-8
export LC_TIME=ru_RU.UTF-8
export LC_COLLATE=ru_RU.UTF-8
export LC_MONETARY=ru_RU.UTF-8
export LC_MESSAGES=ru_RU.UTF-8
export LC_PAPER=ru_RU.UTF-8
export LC_NAME=ru_RU.UTF-8
export LC_ADDRESS=ru_RU.UTF-8
export LC_TELEPHONE=ru_RU.UTF-8
export LC_MEASUREMENT=ru_RU.UTF-8
export LC_IDENTIFICATION=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8

dove ru_RU è il tuo codice paese.

    
risposta data Koss 17.06.2013 - 15:34
6

Come detto qui nel Wiki di Debian , puoi modificare /etc/locale.gen e aggiungere tutti i locali (o decommentarli, Ho avuto una lista di tutte le localizzazioni ma tutte tranne quella che ho usato come commenti) che desideri avere sul tuo sistema. Quindi, esegui

sudo dpkg-reconfigure locales

per aggiornare le impostazioni locali sul tuo sistema. Ora, tutte le impostazioni locali aggiunte / non commentate in /etc/locale.gen sono disponibili sul tuo sistema senza avvisi.

    
risposta data msrd0 14.12.2014 - 12:28
6

La risposta accettata corrente non è sufficiente nella strategia di risoluzione dei problemi perché si può avere un errore umano. Hai impostato il tuo sistema su en_US ma hai en_GB attivato in /etc/locale.gen come avevo nella discussione qui per Raspberry Pi 3b. Dovresti avere tutti i tuoi locali utilizzati abilitati in /etc/locale.gen .

Ho avuto en_GB.UTF-8 UTF-8 abilitato solo in /etc/locale.gen . Dovrei avere solo abilitato en_US.UTF-8 UTF-8 a causa di altri comandi eseguiti per esso. Così ho commentato GB e non commentato, e tutto funziona ora

[email protected]:~ $ sudo vim /etc/locale.gen

[email protected]:~ $ sudo locale-gen 
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

[email protected]:~ $ sudo a2enmod rewrite && a2enmod headers && a2enmod ssl
Module rewrite already enabled
Module headers already enabled
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Module socache_shmcb already enabled
Module ssl already enabled

Ora, non ho gli errori locali con nessun comando.

Sistema: Raspbian Jessie
Hardware: Raspberry Pi 3b

    
risposta data Léo Léopold Hertz 준영 22.06.2016 - 22:25
3

Se utilizzi l'ambiente KDE, controlla il file setlocale.sh in ~/.kde/env/ :

$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en
    
risposta data MaximKostrikin 05.02.2014 - 09:36
2
  1. Potrebbe essere necessario eseguire sudo dpkg-reconfigure anche per l'applicazione installata mentre le impostazioni "locali" non sono valide / non corrispondenti.

    Mentre le impostazioni internazionali del sistema non erano corrette, ho installato vim . Successivamente, quando sono state corrette le impostazioni internazionali del sistema, ho visto una situazione in cui vim mostrava i caratteri utf-8 in modo errato come simboli strani mentre nano e less li mostravano correttamente. Esecuzione

    sudo dpkg-reconfigure vim
    

    è apparso per risolvere il problema dopo la correzione delle impostazioni di sistema.

  2. Ho notato anche la stessa cosa già menzionata: potrebbe essere necessario disconnettere / riconnettere SSH per rendere visibili le modifiche.

risposta data ajaaskel 18.12.2014 - 20:02
2

L'aggiunta del seguente testo a ~/.profile funziona per me:

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

Sto usando Ubuntu 16.04 LTS 64-bit server su Linode.

    
risposta data Jingguo Yao 09.05.2017 - 05:07
1

Questo ha funzionato per me quando ho avuto lo stesso problema (basato sulla soluzione fornito da dman ):

sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
    
risposta data pythonhunter 27.08.2014 - 07:21
1

Stavo riscontrando un problema nell'esecuzione del tema "Agnoster" con oh-my-zsh nella mia workstation docker ized con messaggi di errore simili. (È più veloce di wsl IMO e posso montare docker.sock in questo contenitore tramite Hyper-V VM gestito da Docker For Windows , che mi permette di fare cose docker)

Combinare alcuni dei suggerimenti delle risposte mi ha aiutato a risolverlo per me.

L'ho aggiunto al mio Dockerfile

RUN apt-get install -y locales
RUN sudo locale-gen "en_US.UTF-8"
RUN echo 'LANG="en_US.UTF-8"' > /etc/profile.d/locale.sh
RUN echo 'LANGUAGE="en_US.UTF-8"' >> /etc/profile.d/locale.sh
RUN echo 'LC_ALL="en_US.UTF-8"' >> /etc/profile.d/locale.sh

Ecco un elenco se vuoi provarlo.

    
risposta data sdkks 30.06.2018 - 16:25

Leggi altre domande sui tag