timezonectl

Dernière mise-à-jour :

107.3 - Régionalisation et Internationalisation (3/60)

Les Variables de Régionalisation et d'Internationalisation

L'Internationalisation, aussi appelé i18n car il y a 18 lettres entre la lettre I et la lettre n dans le mot Internationalization, consiste à adapter un logiciel aux paramètres variant d'une région à l'autre :

longueur des mots,

accents,

écriture de gauche à droite ou de droite à gauche,

unité monétaire,

styles typographiques et modèles rédactionnels,

unités de mesures,

affichage des dates et des heures,

formats d'impression,

format du clavier,

etc …

Le Régionalisation, aussi appelé l10n car il y a 10 lettres entre la lettre L et la lettre n du mot Localisation, consiste à modifier l'internalisation en fonction d'une région spécifique.

Le code pays complet prend la forme suivante : langue-PAYS.jeu_de_caractères. Par exemple, pour la langue anglaise les valeurs de langue-PAYS sont :

en_GB = Great Britain,

en_US = USA,

en_AU = Australia,

en_NZ = New Zealand,

en_ZA = South Africa,

en_CA = Canada.

Les variables système les plus importants contenant les informations concernant le régionalisation sont :

Variable	Description
LC_ALL	Avec une valeur non nulle, celle-ci prend le dessus sur la valeur de toutes les autres variables d'internationalisation
LANG	Fournit une valeur par défaut pour les variables d'environnement dont la valeur est nulle ou non définie.
LC_CTYPE	Détermine les paramètres régionaux pour l'interprétation de séquence d'octets de données texte en caractères.

Par exemple :

[trainee@centos7 ~]$ echo $LC_ALL
en_GB.UTF-8
[trainee@centos7 ~]$ echo $LC_CTYPE
[trainee@centos7 ~]$ echo $LANG
en_GB.UTF-8
[trainee@centos7 ~]$ locale
LANG=en_GB.UTF-8
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=en_GB.UTF-8

Gestion du Fuseau d'Horaire

Linux utilise le fuseau d'horaire UTC (Coordinated Universal Time) en interne. Linux doit donc être capable de traduire entre l'UTC et l'heure locale et vice versa. Linux utilise le fichier /etc/localtime pour connaître l'heure locale :

[root@centos6 ~]# ls -l /etc/localtime
-rw-r--r--. 1 root root 2945 23 mai 2012 /etc/localtime

Ce fichier peut être un fichier ordinaire ou bien un lien symbolique pointant vers un de sfichiers dans le répertoire /usr/share/zoneinfo :

[root@centos6 ~]# ls /usr/share/zoneinfo/
Africa Chile GB Indian Mideast posixrules US
America CST6CDT GB-Eire Iran MST PRC UTC
Antarctica Cuba GMT iso3166.tab MST7MDT PST8PDT WET
Arctic EET GMT0 Israel Navajo right W-SU
Asia Egypt GMT-0 Jamaica NZ ROC zone.tab
Atlantic Eire GMT+0 Japan NZ-CHAT ROK Zulu
Australia EST Greenwich Kwajalein Pacific Singapore
Brazil EST5EDT Hongkong Libya Poland Turkey
Canada Etc HST MET Portugal UCT
CET Europe Iceland Mexico posix Universal

Pour connaître le fuseau d'horaire local, utilisez la commande date :

[root@centos6 ~]# date
jeu. sept. 25 14:07:21 CEST 2014

Vous pouvez consulter la liste des codes des zones à l'adresse http://www.timeanddate.com/library/abbreviations/timezones/.

Le fuseau d'horaire est aussi contenu en clair dans le fichier /etc/sysconfig/clock. Sous Red Hat :

[root@centos6 ~]# cat /etc/sysconfig/clock
# The time zone of the system is defined by the contents of /etc/localtime.
# This file is only for evaluation by system-config-date, do not rely on its
# contents elsewhere.
ZONE="Europe/Paris"

Sous Debian et ses dérivés, le fichier /etc/sysconfig/clock n'existe pas. Debian utilise le fichier /etc/timezone :

root@debian:~# cat /etc/timezone
Europe/Paris

Vous pouvez modifier le fuseau d'horaire à l'aide de la commande tzselect. Sous Red Hat :

[root@centos6 ~]# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
1) Africa
2) Americas
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#?

Sous Debian :

root@debian:~# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
1) Africa
2) Americas
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#?

Vous pouvez aussi modifier le fuseau d'horaire directement ainsi :

[root@centos6 ~]# rm /etc/localtime
rm : supprimer fichier « /etc/localtime » ? o
[root@centos6 ~]# ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
[root@centos6 ~]# ls -l /etc/localtime
lrwxrwxrwx. 1 root root 32 25 sept. 14:32 /etc/localtime -> /usr/share/zoneinfo/Europe/Paris

Dernièrement il est possible de modifier le fuseau d'horaire uniquement pour la session en cours et dans le shell courant :

[root@centos6 ~]# date
jeu. sept. 25 14:33:44 CEST 2014
[root@centos6 ~]# export TZ=:/usr/share/zoneinfo/Europe/London
[root@centos6 ~]# date
jeu. sept. 25 13:34:09 BST 2014

<html>

Copyright © 2004-2017 Hugh Norris.<br><br> <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”><img alt=“Licence Creative Commons” style=“border-width:0” src=“http://i.creativecommons.org/l/by-nc-nd/3.0/fr/88x31.png” /></a><br />Ce(tte) oeuvre est mise à disposition selon les termes de la <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”>Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 3.0 France</a>.

</html>