119 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 ?

4voto

Hugo S Ferreira Points 2314

Pour une application web, il peut être préférable d'utiliser setlocale () à l'intérieur de le programme, plutôt que d'exiger que la locale par défaut du système soit définie de manière appropriée à l'extérieur. Il y a moins de détails à régler de cette façon.

2voto

vitaminace33 Points 31

Nota: Certaines des commandes ci-dessous nécessitent les privilèges de l'utilisateur root, envisagez l'utilisation de sudo .

Informations de base

Selon man locale-gen les locales sont définies dans plusieurs fichiers.

/etc/locale.gen

Le fichier de configuration principal, qui a un format simple : chaque ligne qui n'est pas vide et ne commence pas par un # est traitée comme une définition de locale qui doit être construite.

/var/lib/locales/supported.d/

Un répertoire contenant les snippets locale.gen fournis par les paquets language-pack. Ne les modifiez pas manuellement, ils seront écrasés lors des mises à jour des paquets.

Des détails complets sur les locaux de l Arch Wiki .

Vérification des locales et de la locale

Pour vérifier les locales (déjà) générées, exécutez l'une des commandes suivantes (avec des différences mineures dans les résultats).

locale -a
localedef --list-archive
localectl list-locales

Pour vérifier la locale actuellement utilisée, exécutez l'une des commandes suivantes (avec des différences mineures dans les résultats).

locale
localectl

Définition et génération de (nouvelles) locales

Les locales sont généralement définies en décommentant les lignes dans le fichier /etc/locale.gen après quoi il faut courir locale-gen est nécessaire.

nano /etc/locale.gen # uncomment desired lines (locales)
locale-gen

Cela générera des fichiers de locales pour chaque ligne non commentée dans le fichier /etc/locale.gen (et sous /var/lib/locales/supported.d/ ), qu'ils aient été générés précédemment ou non.

Alternativement, la commande

locale-gen <locale>

va décommenter la ligne correspondante dans locale-gen tout en générant la locale désirée et seulement celle-ci.

Suppression des locales

Pour supprimer les locales dans /etc/locale.gen il suffit de commenter les lignes souhaitées et de régénérer les locales en utilisant locale-gen . La commande locale-gen --purge <locale> ne fait pas ce que le modificateur suggère.

Pour supprimer les locales sous /var/lib/locales/supported.d/ est plus délicat. Puisque tout fichier /var/lib/locales/supported.d/<code> dépend du paquet language-pack-<code>-base tout changement apporté au premier sera restauré lorsque le second sera mis à jour.

Solution. Pour empêcher les changements sous /var/lib/locales/supported.d/ et y placer des fichiers avec l'option "Attribut "immuable (i) . Donc, au lieu de supprimer des fichiers, videz-les. Par exemple :

cd /var/lib/locales/supported.d/
rm <code> && touch <code> # <code> has been emptied
lsattr <code>    # regular attributes
chattr +i <code> # adding (+) immutable
lsattr <code>    # checking attributes

Définition de la locale

La définition et la génération des locales ne définissent pas les locales du système. L'une des commandes suivantes permet d'obtenir ce résultat.

echo LANG=<code> | sudo tee /etc/locale.conf # reboot (might be ignored in Ubuntu)
localectl set-locale LANG=<code>

1voto

valentt Points 295

Mais vous devez d'abord avoir installé le pack de langues nécessaire. Sur mon VPS basé en Allemagne, il n'y avait pas de pack de langue anglaise pré-installé. Vous devez donc d'abord vérifier qu'il est installé :

aptitude install language-pack-en

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