Les paramètres régionaux ne sont pas corrects. Comment puis-je les réinitialiser?

43

J'ai un problème de localisation.
La séquence de classement dans nautiluset d'autres programmes a changé.
Des erreurs de localisation apparaissent dans le terminal lorsque je lance une application graphique.

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

La localecommande produit des messages d'erreur

    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=

Comme suggéré dans la question askubuntu , j'ai exécuté les commandes suivantes, mais il n'y a eu aucun changement.

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

J'ai également essayé la suggestion dans la question d'askubuntu … également aucun changement.

    apt-get install --reinstall locales

Je pense que cela a commencé lorsque j’ai installé et désinstallé temporairement l’éditeur de méthode de saisie en langue ourdou via IBus.. c’est certainement arrivé le même jour.

Peut-être est-ce lié à IBus, mais je n’ai eu aucun problème auparavant.

  • Le système d'exploitation est 10.04
Peter.O
la source

Réponses:

27

J'ai réussi à faire fonctionner les choses "normalement" à nouveau.

Après avoir essayé de nombreuses réinstallations de paquets, etc., y compris la suppression complète d'IBus (sans effet), j'ai commencé à penser que cela pouvait être causé par un paramètre de configuration qui ne modifie pas la réinstallation.

J'avais remarqué que le résultat de la localetâche était plutôt dépourvu d'assignations UTF-8. Je l'ai donc vérifié dans une VM récemment installée ... toutes les entrées de LC_ * (à l'exception de LC_ALL, qui remplace toutes les autres) ont été définies avec le .UTF-8suffixe. donc je définis manuellement les valeurs LC_ * comme indiqué ci-dessous.

J'aurais probablement pu simplement l'utiliser LC_ALL="en_AU.UTF-8", mais en lisant cette information, j'ai découvert comment personnaliser le format de la date et de l'heure du système et LC_ALLremplacer mon paramètre personnalisé.

Je ne sais pas si j'ai utilisé la méthode la plus appropriée, mais ça marche!

Le fichier modifié est: /etc/default/locale

  • Cela montre le contenu avant le mod:

    LANG="en_AU.UTF-8"
    LANGUAGE="en_AU:en"
    LC_MESSAGES="en_AU.UTF-8"
    
  • Cela montre le contenu après le 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"
    

Le même fichier dans la VM ne contenait que cette ligne:

    LANG="en_AU.UTF-8" 

Peter.O
la source
merci pour votre post. Pour mémoire, je devais redémarrer mon système pour que le correctif fonctionne. (aurait peut-être pu utiliser emacs eval-buffer?)
David LeBauer
19

Redéfinir les paramètres régionaux et reconfigurer peut suffire à résoudre le problème:

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

Lorsque vous courez, sudo dpkg-reconfigure localesvous pouvez sélectionner les paramètres régionaux de votre choix en cliquant dessus spacebaret en vous déplaçant avec et avant de frapper Enter.

Guillaume Vincent
la source
Cela vaut peut-être la peine de mentionner que vous sélectionnez les langues de votre choix avec la barre d'espace.
Daniel Kmak
@ Daniel Je ne comprends pas: barre d'espace?
Guillaume Vincent
1
Lors de l'exécution, dpkg-reconfigurevous obtenez une liste avec des cases à cocher et pour sélectionner la langue, vous devez utiliser la barre d'espace. Il n'y a pas de telles informations dans le programme de la console, alors j'ai pensé qu'il serait utile de les écrire sous la réponse. Je ne savais pas comment sélectionner ces langues.
Daniel Kmak
1
@Daniel done :)
Guillaume Vincent le
15

J'ai également rencontré ce problème, comme vous le voyez, votre LC_ALLest vide. J'ai fait comme suit et ça aide:

$ sudo vim /etc/environment

et régler le LC_ALLà quelque chose comme en_US.UTF-8, le mien est:

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

puis redémarrez, et exécutez locale, et il devrait être quelque chose comme:

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
la source
Cette solution fonctionne bien sur Ubuntu 12.04 LTS précise
speciousfool
Le réglage LC_ALLest découragé. "L'utilisation de LC_ALL est fortement déconseillée car elle annule tout. Merci de ne l'utiliser que lors de tests et de ne jamais la définir dans un fichier de démarrage." wiki.debian.org/Locale
gertvdijk
4

Si vous êtes connecté à distance à la machine via ssh (par exemple, à partir d'un périphérique macosx), vous devez définir ces variables sur la machine depuis laquelle vous vous connectez.

ajoutez ce qui suit à ~ / .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
la source
1
Est-ce une erreur connue lors de la connexion à partir d'OS X?
MindTooth
aucune idée si cela est voulu par la conception ou si une faute / un bogue
Somatik
2

Je veux juste ajouter que je devais aussi éditer mon profil personnel:

gedit ~/.profile

Donc, dans votre cas, cela ressemblerait à:

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

Déconnexion + Connexion. Et tout est comme prévu.

Aas
la source
J'avais besoin exportau début de chaque ligne et je l'ai insérée ~/.bashrc.
Sparhawk
2

J'ai eu le même problème pendant plusieurs mois, de nombreux outils logiciels ont mis en garde contre des paramètres régionaux erronés, et certains ont même refusé de s'exécuter. Je souhaite utiliser la langue anglaise, mais les paramètres monétaires et numériques suédois.

Ce qui a finalement fonctionné pour moi a été d’éditer /etc/default/localeoù j’ai supprimé tout le contenu de ce fichier. J'ai ensuite lancé la configuration de la langue Unity (Settings -> Language Support), tout configuré (Ubuntu souhaitait installer certains composants manquants) et appuyé "Apply System-wide"lorsque j'ai terminé.

Mon /etc/default/localemaintenant ressemble à ceci.

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

La grande différence entre ceci et mon fichier original est LANGUAGE="en".

David A
la source
Mon sauveur de vie ...
John Joe
2

Cela fait un certain temps que cela a été posté, mais récemment, j'ai eu des problèmes avec les variables "locales" et aucune réponse ne m'a donné de résultat. Peut-être que ma propre expérience pourrait aider quelqu'un d'autre.

Ma variable LANG était vide et cela me posait des problèmes.

$locale

Sortie:

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

J'ai essayé certaines des commandes comme:

sudo locale-gen
sudo dpkg-reconfigure locales

Sans succès. J'ai essayé d'éditer le fichier / etc / default / locale et j'ai découvert qu'il était déjà OK:

$cat /etc/default/locale

Sortie:

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"

Mon fichier .pam_environment semblait également correct:

$cat .pam_environment

Sortie:

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

Je ne voudrais pas ajouter de contenu supplémentaire aux fichiers de profil ou de base, principalement parce que, même si cela pouvait résoudre le problème, je ne connaissais pas la cause, ce qui m'a agacé.

Enfin, je me suis demandé si quelque chose remplaçait déjà les variables "locales" et j'ai lancé la commande suivante:

$cat .bashrc | grep LANG

Sortie:

unset LANG

Donc, j'ai trouvé deux lignes sur mon fichier .bashrc d' où la cause (je ne colle pas le fichier entier):

unset LANG
export LC_ALL=POSIX

Je ne sais pas comment ni quand ces lignes se sont retrouvées dans mon fichier bash, mais je suis tout à fait sûr de ne pas les avoir écrites. Peut-être que mon .bashrc a été remplacé alors que je travaillais avec des outils de développement 'sais pas, mais puisque je sais que c'était involontaire et qu'il y a des gens qui n'ont aucune idée de ce qui cause la mauvaise conduite "locale", peut-être que cela pourrait les aider. Quoi qu'il en soit, commenter ces lignes et un redémarrage ont résolu le problème pour moi. Ici, j'ai répondu à la même question axée sur les plaintes sublimeT3 concernant la variable LANG .

smajtkst
la source
1

Semble une mise à jour locales lieux en quelque sorte. Le correctif que j'ai trouvé consistait à vous déconnecter, à changer la langue sélectionnée avant de vous connecter et de vous reconnecter.

Il pourrait également être utile de réinstaller les paramètres régionaux dans Synaptic, bien que je ne puisse pas confirmer que c’est ce qui a été résolu, mais je pense qu’il était en train de se déconnecter ou quelque chose du genre.

RolandiXor
la source
Se reconnecter et changer de langue. Je ne vois aucun moyen de changer de langue à la connexion .. Je vois un texte qui mentionne le changement de langue, mais il n'y a pas d'option (boutons ou autres) .. c'est peut-être parce que je ne dispose que de l'anglais australien activé ... et j'ai exécuté toutes les commandes ci-dessus .. donc c'est toujours un mystère pour le moment ...
Peter.O
@ red.bear: essayez d'installer language-pack-enet language-support-enrépétez le processus ci-dessus.
RolandiXor
1

J'ai essayé de modifier le fichier de paramètres régionaux et de choisir différentes langues lors de la connexion.

Filtrer les paquets cassés avec Synaptic et supprimer complètement les 9 paquets incriminés a fonctionné pour moi (libreoffice et python uno).

Mais je ne parviens pas à installer LibreOffice sans apparemment corrompre le gestionnaire de paquets. Il s'installe cependant.

Je suis sur 11.04 i386. Avertissement: Il y a eu une panne de courant lors de la dernière partie de mon installation, Ubuntu téléchargeant des mises à jour.

marajit
la source
1

J'ai eu le même problème, mais aller dans Système> Administration> Language Support pourrait résoudre votre problème car il vous demandera peut-être d'installer des paquets et tout ira bien !! Cela a fonctionné pour moi alors je suppose que ça va faire la même chose pour vous !!

Nickolas Pylarinos
la source
0

Courir

export LC_ALL="zh_CN.utf8"
ibus-setup

et sélectionnez l’une des options de la méthode de saisie que vous souhaitez.

mobeyond
la source
0

J'ai eu un problème similaire (le plus notable dans Thunderbird) à l'exemple en_AU ici - mais je viens de en_NZ - et après quelques essais et erreurs avec Ubuntu 17.10, mon correctif était de mettre à jour ~ / .pam_environment, en remplaçant toutes les autres entrées ( principalement en_AU et en_US) avec en_NZ, puis redémarrez.

Il est dommage que vous ne puissiez pas simplement définir votre environnement local et le laisser faire ce qu'il prétend: la plupart des déçus que l'exécution de l'environnement local dpkg-configure ne semble en réalité rien faire d'utile.

BlakJak
la source