web-dev-qa-db-fra.com

Comment installer / changer les paramètres régionaux 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 les formats du système sont en anglais mais je les veux en néerlandais, j'ai donc besoin de définir les paramètres régionaux du système. Comment faire cela sur 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 la configuration de LC_ALL sur mon système de bureau Ubuntu fonctionne bien. Dois-je installer des packages supplémentaires pour que cela fonctionne, ou est-ce que je le fais complètement mal?

67
Hongli Lai

Éditer /etc/default/locale et définissez le contenu sur:

LANG="nl_NL.UTF-8"

Vous pouvez vérifier les paramètres régionaux que vous avez actuellement générés en utilisant:

# locale -a

Vous pouvez en générer davantage en modifiant /etc/locale.gen et décommentant les lignes des paramètres régionaux que vous souhaitez activer. Ensuite, vous pouvez les générer en exécutant:

# locale-gen

Vous pouvez trouver une liste des paramètres régionaux pris en charge dans /usr/share/i18n/SUPPORTED

Il y a plus d'informations disponibles sur le wiki Debian .

77
David Pashley

Vous devrez peut-être installer le package locales. Cela vous demandera quels paramètres régionaux générer. S'il est déjà installé, alors dpkg-reconfigure locales vous permettra de générer plus de paramètres régionaux.

68
pgs

Les réponses ici sont incomplètes comme dans la plupart des autres pays. Après avoir rassemblé des informations de quelques endroits, ce qui a fonctionné pour moi a été de (1) s'assurer que les paramètres régionaux que je voulais étaient disponibles (les générer si ce n'était pas le cas) puis (2) définir les variables d'environnement liées aux paramètres régionaux sur les paramètres régionaux souhaités.

Dans mon cas, j'avais besoin de en_US.UTF-8 par programmation (c'est-à-dire de manière non interactive) installé dans un conteneur Docker. Le ff a accompli ce dont j'avais besoin, mais cela devrait très bien fonctionner 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 les paramètres régionaux ont été correctement configurés en appelant 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 avait beaucoup d'entrées de questions-réponses à ce sujet, mais seules quelques-unes étaient réellement utiles. Crédit lorsque le crédit est dû:

17
Czar

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 la sortie suivante de locale-gen, c'est-à-dire ne générant aucun paramètre régional (aucun répertorié):

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

Fonctionnement dpkg-reconfigure locales et la sélection de certains paramètres régionaux n'a pas été mise à jour /etc/locale.gen comme je m'y attendais.

Cependant, lorsque j'ai modifié ce fichier manuellement et décommenté les paramètres régionaux 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 trouvé que l'exécution de locale-gen sans le --keep-existing l'option supprimera tous ces paramètres régionaux générés manuellement, c'est-à-dire tous les paramètres régionaux non répertoriés (et non commentés) dans /etc/locale.gen.

6
qris

Pour une application Web, il pourrait être préférable d'utiliser setlocale () à l'intérieur du programme, plutôt que d'exiger que la valeur par défaut du système les paramètres régionaux doivent être définis de manière appropriée à l'extérieur. Les extrémités moins lâches de cette façon.

3
SamB

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

Sudo dpkg-reconfigure locales

Vous pouvez également ajouter les paramètres régionaux français (par exemple) de cette façon (au lieu de modifier /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 et UTF-8 jeux de codes du fr_FR locale et enfin tapez:

Sudo dpkg-reconfigure locales

pour terminer le travail

1
SebMa

Mais vous devez d'abord avoir installé le module linguistique. Sur mon VPS basé en allemand, aucun pack de langue anglaise n'était préinstallé. Vérifiez donc d'abord que vous l'avez installé:

aptitude install language-pack-en
1
valentt