Comment installer / changer les paramètres régionaux sur Debian?

65

J'ai écrit une application Web pour laquelle 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, je dois donc définir les paramètres régionaux du système. Comment faire cela sur Debian? J'ai essayé de régler LC_ALL=nl_NLmais 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 paquets supplémentaires pour que cela fonctionne ou est-ce que je le fais tout à fait mal?

Hongli Lai
la source
Existe-t-il un moyen de le faire automatiquement en fonction de l'adresse IP attribuée au serveur?
Scoop
2
Configuration Debian Locale de façon standard : sudo dpkg-reconfigure locales.
Paul Rougieux 13/12/17

Réponses:

72

Éditez /etc/default/localeet 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.genet en supprimant les commentaires des lignes pour les paramètres régionaux que vous souhaitez activer. Ensuite, vous pouvez les générer en lançant:

# locale-gen

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

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

David Pashley
la source
9
/ var / lib / belocs / list n'existe pas. Vous devez modifier /etc/locale.gen ou exécuter dpkg-reconfigure les environnements locaux à la place.
Pages
+1 cette réponse pour décrire locale-gen, mais comme dans le commentaire précédent, il n’existe aucun fichier tel que / var / lib / belocs / list sur mon système
telent
Il m'a fallu 5 heures pour trouver cette réponse, qui s'est avérée parfaite. De plus, cela permet de créer des alias: en_US UTF-8 et it_IT UFT-8 m'ont permis d'avoir mes locales en UTF-8 par défaut, ce qui est bien si vous avez du code PHP qui dépend des locales
Cec
Existe-t-il une commande ou un package permettant d’éditer et de définir le contenu de / etc / default / locale?
Karl Morrison
Voir la réponse ci-dessous de Czar. Vous pouvez le faire comme: sed -i '/ ^ # * (en_US.UTF-8) / \ 1 /' /etc/locale.gen
Tobias Gaertner
66

Vous devrez peut-être installer le localespackage. Cela vous demandera quelles localités générer. S'il est déjà installé, dpkg-reconfigure localesvous pourrez alors générer plus de paramètres régionaux.

les pages
la source
Cela ne génère que des paramètres régionaux, pas la valeur par défaut du système.
David Pashley
16
NON, la dernière question de dpkg-reconfigure locale est de sélectionner la locale par défaut.
Pages
2
Je devais le lancer avec sudocomme dans sudo dpkg-reconfigure locales.
Alex Yursha
S'il s'agit d'un serveur accessible via ssh, la page du wiki Debian sur les paramètres régionaux recommande de laisser le paramètre régional par défaut NONE.
Paul Rougieux 13/12/17
1
C’était exactement ce dont j'avais besoin: installer tous les paramètres régionaux en quelques touches seulement. Merci beaucoup!
aexl
11

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

Dans mon cas, je devais en_US.UTF-8installer par programme (c'est-à-dire de manière non interactive) dans un conteneur Docker. Le ff a accompli ce dont j'avais besoin mais cela devrait fonctionner parfaitement 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 ~/.bashrcen sorte que les variables env prennent effet immédiatement. Vous pouvez vérifier que les paramètres régionaux ont été configurés correctement 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 sur ce sujet, mais seules quelques-unes ont été utiles. Crédit lorsque le crédit est dû:

Tsar
la source
6

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 eu la sortie suivante locale-gen, c'est-à-dire ne générant aucune locale (aucune répertoriée):

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

L'exécution dpkg-reconfigure localeset la sélection de certains paramètres régionaux ne se sont pas mis à jour /etc/locale.gencomme prévu.

Cependant, lorsque j'ai modifié manuellement ce fichier et que je n'ai pas commenté les paramètres régionaux que je souhaitais, j'ai alors locale-gencommencé à 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 aussi été capable de générer manuellement des locales 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 constaté qu’exécuter locale-gensans l’ --keep-existingoption supprime tous les 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.

qris
la source
3

Pour une application Web, il peut être préférable d’utiliser setlocale () dans le programme plutôt que d’exiger que les paramètres régionaux par défaut du système soient définis de manière appropriée en dehors. Moins de bouts lâches de cette façon.

SamB
la source
1
Si le système ne dispose pas des paramètres régionaux requis, setlocalecela ne fonctionnera pas.
Le parrain
1

Mais vous devez d'abord avoir installé le pack de langue requis. Sur mon VPS basé en Allemagne, aucun pack de langue anglaise n'était pré-installé. Donc, d'abord, vérifiez que vous l'avez installé:

aptitude install language-pack-en
valentt
la source
1

Pour ceux qui, comme moi, sur Ubuntu 14.04 LTS, n’ont en quelque sorte pas de /etc/locale.genfichier, vous pouvez ajouter une nouvelle locale dans /var/lib/locales/supported.d/localpuis exécuter:

sudo dpkg-reconfigure locales

Vous pouvez également ajouter les paramètres régionaux français (par exemple) de cette façon (au lieu de les modifier /var/lib/locales/supported.d/local):

sudo locale-gen fr_FR fr_FR.UTF-8

pour ajouter et générer les jeux de codes ISO-8859-1et UTF-8de la fr_FRlocale et enfin taper:

sudo dpkg-reconfigure locales

pour finir le travail

SebMa
la source