114 votes

Comment installer/changer la locale sur Debian ?

J'ai écrit une application web dont l'interface utilisateur est en néerlandais. J'utilise les routines de date et d'heure du système pour formater les chaînes de date dans l'application. Cependant, les chaînes de date que le système formate sont en anglais, mais je veux qu'elles soient en néerlandais, je dois donc définir la locale du système. Comment puis-je faire cela sous Debian ? J'ai essayé de définir LC_ALL=nl_NL mais cela ne semble pas avoir d'effet :

$ date
Sat Aug 15 14:31:31 UTC 2009
$ LC_ALL=nl_NL date
Sat Aug 15 14:31:36 UTC 2009

Je me souviens que le réglage LC_ALL sur mon système de bureau Ubuntu fonctionne bien. Dois-je installer des paquets supplémentaires pour que cela fonctionne, ou est-ce que je m'y prends mal ?

122voto

David Pashley Points 22851

Modifier /etc/default/locale et mettre le contenu à :

LANG="nl_NL.UTF-8"

Vous pouvez vérifier quelles sont les locales que vous avez actuellement générées en utilisant :

locale -a

Vous pouvez en générer davantage en modifiant /etc/locale.gen et en décommentant les lignes pour les locales que vous voulez activer. Ensuite, vous pouvez les générer en exécutant la commande :

locale-gen

Vous pouvez trouver une liste des langues supportées dans /usr/share/i18n/SUPPORTED

De plus amples informations sont disponibles sur le site Le wiki de Debian .

95voto

pgs Points 3441

Vous devrez peut-être installer le locales paquet. Il vous demandera quelles sont les locales à générer. S'il est déjà installé, alors dpkg-reconfigure locales vous permettra de générer plus de locales.

57voto

Czar Points 520

Les réponses sont ici incomplètes comme dans la plupart des autres cas. Après avoir rassemblé des informations provenant de plusieurs endroits, ce qui a fonctionné pour moi a été de (1) m'assurer que la locale que je voulais était disponible (la générer si elle ne l'était pas) puis (2) définir les variables d'environnement liées à la locale pour la locale désirée.

Dans mon cas, j'avais besoin de en_US.UTF-8 installé de manière programmatique (c'est-à-dire de manière non interactive) dans un conteneur docker. Le ff a accompli ce dont j'ai besoin, mais il devrait fonctionner très bien dans un Shell interactif.

apt-get update

# Install locales package
apt-get install -y locales

# Uncomment en_US.UTF-8 for inclusion in generation
sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen

# Generate locale
locale-gen

# Export env vars
echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
echo "export LANG=en_US.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=en_US.UTF-8" >> ~/.bashrc

Sur le même Shell, vous devrez faire source ~/.bashrc pour que les vars env prennent effet immédiatement. Vous pouvez vérifier que la locale a été configurée correctement en invoquant locale .

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

Il y a eu beaucoup de questions-réponses sur ce sujet, mais seules quelques-unes ont été réellement utiles. Le crédit où le crédit est dû :

12voto

qris Points 1141

Aucune de ces réponses n'a fonctionné pour moi, sur un conteneur LXC installé avec :

lxc-create -n sse-master -t download -n sse-master -- \
    -d debian -r jessie --arch i386

J'ai toujours obtenu le résultat suivant de locale-gen c'est-à-dire qu'il ne génère aucune locale (aucune n'est répertoriée) :

$ sudo locale-gen
Generating locales (this might take a while)...
Generation complete.

Running dpkg-reconfigure locales et la sélection de certaines langues ne mettait pas à jour /etc/locale.gen comme je l'attendais.

Cependant, lorsque j'ai modifié ce fichier manuellement et décommenté les locales que je voulais, alors locale-gen a commencé à fonctionner correctement :

$ sudo locale-gen
Generating locales (this might take a while)...
  en_GB.UTF-8... done
  en_US.UTF-8... done
Generation complete.

J'ai également pu générer des locales manuellement comme ceci :

sudo localedef -i en_US -f UTF-8 en_US.UTF-8
sudo localedef -i en_GB -f UTF-8 en_GB.UTF-8

Mais ce n'était pas une solution permanente : J'ai découvert que l'exécution locale-gen sans le --keep-existing supprimera toutes les locales générées manuellement, c'est-à-dire toutes les locales non listées (et non commentées) dans /etc/locale.gen .

5voto

SebMa Points 233

Pour ceux qui, comme moi, sur Ubuntu 14.04 LTS, n'ont, en quelque sorte, pas de /etc/locale.gen vous pouvez ajouter une nouvelle locale dans /var/lib/locales/supported.d/local puis exécutez :

sudo dpkg-reconfigure locales

Vous pouvez également ajouter la locale française (par exemple) de cette façon (au lieu d'éditer /var/lib/locales/supported.d/local ) :

sudo locale-gen fr_FR fr_FR.UTF-8

pour ajouter et générer le ISO-8859-1 y UTF-8 codesets de la fr_FR et enfin tapez :

sudo dpkg-reconfigure locales

pour finir le travail

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X