Pour configurer le fuseau horaire, je crée d'abord '/etc/localtime' comme un lien symbolique vers le fichier zoneinfo approprié dans le répertoire '/usr/share/zoneinfo'. Ensuite, j'exécute la commande dpkg-reconfigure, et tout sera mis en place. Par exemple, pour configurer le fuseau horaire 'Europe/Bruxelles' :
AREA='Europe'
ZONE='Brussels'
ZONEINFO_FILE='/usr/share/zoneinfo/'"${AREA}"'/'"${ZONE}"
ln --force --symbolic "${ZONEINFO_FILE}" '/etc/localtime'
dpkg-reconfigure --frontend=noninteractive tzdata
(Remarquez que l'AREA est un sous-répertoire sous '/usr/share/info', et le ZONE est un fichier dans le sous-répertoire de l'AREA).
Pour configurer les paramètres régionaux, je lance d'abord un script sed qui va créer une nouvelle copie du fichier '/etc/locale.gen', basée sur le contenu du fichier '/usr/share/i18n/SUPPORTED'. Chaque ligne du fichier d'entrée sera copiée, mais deviendra un commentaire sauf s'il s'agit d'une entrée d'un paramètre régional UTF-8 pour une langue que je souhaite rendre disponible sur mon système (par exemple, anglais, néerlandais, français et allemand) :
sed --regexp-extended --expression='
1 {
i\
# Ce fichier répertorie les paramètres régionaux que vous souhaitez construire. Vous pouvez trouver une liste\
# de paramètres régionaux valides pris en charge à /usr/share/i18n/SUPPORTED, et vous pouvez ajouter\
# des paramètres régionaux définis par l'utilisateur à /usr/local/share/i18n/SUPPORTED. Si vous modifiez\
# ce fichier, vous devez réexécuter locale-gen.\
\
}
/^(en|nl|fr|de)(_[[:upper:]]+)?(\.UTF-8)?(@[^[:space:]]+)?[[:space:]]+UTF-8$/! s/^/# /
' /usr/share/i18n/SUPPORTED > /etc/locale.gen
Ensuite, je définis le paramètre régional par défaut dans la base de données debconf, par exemple, en anglais britannique :
debconf-set-selections <<< 'locales locales/default_environment_locale select en_GB.UTF-8'
Je supprime ensuite le fichier '/etc/default/locale' existant (juste pour m'assurer que son ancien contenu n'interférera pas avec mes nouveaux paramètres), et j'exécute la commande dpkg-reconfigure pour générer tous les paramètres régionaux sélectionnés par le script sed, et pour créer un nouveau fichier '/etc/default/locale' avec seulement une entrée pour définir la variable 'LANG' sur mon paramètre régional par défaut sélectionné :
rm --force --verbose /etc/default/locale
dpkg-reconfigure --frontend=noninteractive locales
Ensuite, selon mes besoins, je peux vouloir exécuter quelques commandes update-locale, pour remplacer, par exemple, les variables qui affectent le formatage des valeurs, et les définir sur un paramètre régional différent (comme l'anglais irlandais) :
update-locale LC_NUMERIC='en_IE.UTF-8'
update-locale LC_TIME='en_IE.UTF-8'
update-locale LC_MONETARY='en_IE.UTF-8'
update-locale LC_PAPER='en_IE.UTF-8'
update-locale LC_NAME='en_IE.UTF-8'
update-locale LC_ADDRESS='en_IE.UTF-8'
update-locale LC_TELEPHONE='en_IE.UTF-8'
update-locale LC_MEASUREMENT='en_IE.UTF-8'
update-locale LC_IDENTIFICATION='en_IE.UTF-8'
(Je pourrais avoir spécifié tous ces paramètres lors d'une seule invocation de la commande update-locale, mais apparemment, l'ordre dans lequel les entrées sont écrites dans le fichier '/etc/default/locale' est imprévisible si je le fais. Je préfère qu'elles soient toujours dans le même ordre, c'est pourquoi je les génère une par une.)
Enfin, je peux vouloir exécuter une dernière fois la commande update-locale, pour configurer la variable LANGUAGE (c'est-à-dire, la liste des langues dans lesquelles je veux afficher les messages textuels traduisibles) :
update-locale LANGUAGE='en_GB:en_US:en'