Chapitre 8. I18N et L10N

Table des matières

8.1. Les paramètres linguistiques (« locale »)
8.1.1. Justification de l’utilisation d’UTF-8 dans les paramètres linguistiques
8.1.2. Reconfiguration des paramètres linguistiques
8.1.3. Coder les noms de fichiers
8.1.4. Messages et documentation traduits
8.1.5. Effet des paramètres linguistiques
8.2. L’entrée clavier
8.2.1. La saisie avec le clavier pour la console Linux et X Window
8.2.2. La saisie avec le clavier pour Wayland
8.2.3. Prise en charge de la méthode d’entrée avec iBus
8.2.4. Un exemple pour le japonais
8.3. L’affichage de sortie
8.4. Largeur des caractères ambigus d’Asie orientale

Le multilinguisme (M17N) ou la gestion de la langue natale (« Native Language Support ») d’un logiciel applicatif est réalisé en deux étapes :

[Astuce] Astuce

Il y a 17, 18, ou 10 lettres entre « m » et « n », « i » et « n » ou « l » et « n » dans « multilingualization », « internationalization » et « localization » ce qui correspond à M17N, I18N et L10N. Consulter Internationalisation et localisation pour plus de détails.

Le comportement des programmes prenant en charge l’internationalisation est configuré par la variable d’environnement « $LANG » pour prendre en charge la régionalisation. La prise en charge effective des fonctionnalités dépendantes des paramètres régionaux par la bibliothèque libc nécessite l’installation des paquets locales ou locales-all. Le paquet locales doit être initialisé correctement.

Si ni le paquet locales ni le paquet locales-all n’est installé, la prise en charge des fonctionnalités régionales est impossible et le système utilise des messages en anglais américain et gère les données en tant que ASCII. Ce comportement est le même que si « $LANG » est défini par « LANG= », « LANG=C » ou « LANG= POSIX ».

Des logiciels modernes, tels que GNOME et KDE, gèrent le multilinguisme. Ils sont internationalisés en les faisant gérer les données UTF-8 et régionalisés en leur donnant les messages traduits par l’intermédiaire de l’infrastructure gettext(1). Les messages traduits peuvent être fournis sous forme de paquets de régionalisation séparés.

Le système actuel d'interface graphique du bureau Debian définit normalement les paramètres régionaux pour l'environnement graphique comme « LANG=xx_YY.UTF-8 ». Ici, « xx » correspond aux codes de langue ISO 639 et « YY » correspond aux codes de pays ISO 3166. Ces valeurs sont définies par la boîte de dialogue de configuration de l'interface graphique de bureau et modifient le comportement du programme. Consulter la Section 1.5.2, « La variable « $LANG » ».

La représentation la plus simple des données textuelles est en ASCII, ce qui est suffisant pour l'anglais et utilise moins de 127 caractères (représentables avec 7 bits).

Même le texte anglais en texte brut peut contenir des caractères non-ASCII, par exemple les guillemets apostrophes culbutés gauches et droits ne sont pas disponibles en ASCII.

“double quoted text” is not "double quoted ASCII"
‘single quoted text’ is not 'single quoted ASCII'

Afin de prendre en charge un plus grand nombre de caractères, de nombreux jeux de caractères et systèmes de codage ont été utilisés pour prendre en charge beaucoup de langues (consulter le Tableau 11.2, « Liste de valeurs de codage et leur utilisation »).

Le jeu de caractères Unicode peut représenter pratiquement tous les caractères humainement connus avec une plage de points de code de 21 bits (c'est-à-dire de 0 à 10FFFF en notation hexadécimale).

Le système de codage de texte UTF-8 adapte les points de code Unicode dans un flux de données pratique de 8 bits grandement compatible avec le système de traitement de données ASCII. Cela fait de UTF-8 le choix moderne privilégié. UTF signifie Unicode Transformation Format. Lorsque les données en texte brut ASCII sont converties en données UTF-8, elles ont exactement le même contenu et la même taille que l’ASCII originel. Ainsi, vous ne perdez rien en déployant les paramètres régionaux UTF-8.

Sous les paramètres régionaux UTF-8 avec le programme d’application compatible, vous pouvez afficher et modifier toutes les données textuelles en langue étrangère tant que les fontes et les méthodes de saisie requises sont installées et activées. Par exemple avec le paramètre « LANG=fr_FR. UTF-8 », gedit(1) (éditeur de texte pour le bureau GNOME) peut afficher et modifier des données de texte en caractères chinois tout en présentant des menus en français.

[Astuce] Astuce

Le nouveau paramètre régional standard "en_US.UTF-8" et celui ancien standard « C"/"POSIX » utilisent les messages standard en anglais américain. Ils ont des différences subtiles dans l'ordre de tri, etc. Si vous souhaitez gérer non seulement les caractères ASCII, mais également tous les caractères encodés en UTF-8 élégamment tout en conservant l'ancien comportement régional « C », utilisez le paramètre « C.UTF-8 » non standard avec Debian.

[Note] Note

Certains programmes utilisent davantage de mémoire lors de l’utilisation de I18N. Cela parce qu’ils sont codés avec l’utilisation interne d’UTF-32(UCS4) pour la prise en compte d’Unicode afin d’optimiser la vitesse, ils utilisent 4 octets pour chaque caractère ASCII indépendamment de la « locale » sélectionnée. De nouveau, il n’y a rien à perdre en mettant en œuvre des paramètres linguistiques UTF-8.

Pour que le système puisse accéder à un paramètre régional particulier, les données de paramètres régionaux doivent être compilées à partir de la base de données de paramètres régionaux.

Le paquet locales n’est pas fourni avec des données de paramètres régionaux précompilées. Vous devez le configurer comme suit :

# dpkg-reconfigure locales

Ce processus se déroule en deux étapes :

La valeur des paramètres régionaux par défaut pour l’ensemble du système définie dans « /etc/default/locale » peut être remplacée par la configuration de l’interface graphique pour les applications graphiques.

[Note] Note

Le système d’encodage traditionnel réel peut être identifié par « /usr/share/i18n/SUPPORTED ». Ainsi, « LANG=en_US » est « LANG=en_US. ISO-8859-1 ».

Le paquet locales-all est livré avec les données de paramètres régionaux pré-compilées pour toutes les données de paramètres régionaux. Comme il ne crée pas « /etc/default/locale », vous devrez peut-être encore installer le paquet locales.

[Astuce] Astuce

Le paquet locales de certaines distributions dérivées de Debian sont livrées avec des données pré-compilées pour tous les paramètres régionaux existants. Vous devez installer les deux paquets locales et locales-all dans Debian pour imiter cet environnement de système.

Pour les échanges de données entre plateformes (consultez Section 10.1.7, « Périphériques d’enregistrement amovibles »), il vous faudra peut-être monter certains systèmes de fichiers ayant un codage particulier. Par exemple, , la commande mount(8) pour un système de fichiers vfat suppose que l’on utilise CP437 si on l’utilise sans option. Vous devrez fournir les options explicites à mount pour utiliser des noms de fichiers codés en UTF-8 ou en CP932.

[Note] Note

Lors du montage automatique d’un clé USB pouvant être branchée à chaud sur un environnement de bureau moderne comme GNOME, vous pouvez indiquer ces options de montage avec un clic-droit sur l’icône du bureau. Cliquez l’onglet « Drive », cliquez « Paramètres » pour l’étendre et entrez « utf8 » dans « Options de montage ». La prochaine fois que vous monterez cette clé mémoire, le montage avec UTF-8 sera activé.

[Note] Note

Si vous êtes en train de mettre à jour le système ou de déplacer des disques depuis un ancien système qui n’était pas UTF-8, les noms de fichiers avec des caractères non ASCII peuvent être codés avec des codages historiques et obsolètes tels que ISO-8859-1 ou eucJP. Veuillez consulter l’aide des outils de conversion de texte pour les convertir en UTF-8. Consultez Section 11.1, « Outils de conversion de données textuelles ».

Samba utilise Unicode pour les clients les plus récents (Windows NT, 200x, XP) mais utilise par défaut CP850 pour des clients plus anciens (DOS et Windows 9x/Me). Cette valeur par défaut pour les anciens clients peut être modifiée en utilisant « dos charset » dans le fichier « /etc/samba/smb.conf », par exemple, avecCP932 pour le japonais.

Il existe des traductions de nombreux messages et documents affichés par le système Debian, comme les messages d’erreur, la sortie standard des programmes,les menus et les pages de manuel. La GNU gettext(1) command tool chain est utilisé comme outil de base pour la plupart des activités de traduction.

Dans « Tâches » → « Localisation » aptitude(8) fournit une liste exhaustive de paquets binaires utiles qui ajoutent les traductions de messages aux applications et fournissent de la documentation traduite.

Vous pouvez, par exemple, obtenir les messages traduits pour une page de manuel en installant le paquet manpages-LANG. Pour lire la page de manuel de nom_programme en italien depuis « /usr/share/man/it/ », lancez le programme de la manière suivante :

LANG=it_IT.UTF-8 man programname

GNU gettext peut s’adapter à la liste de priorité des langues de traduction avec la variable d’environnement $LANGUAGE. Par exemple :

 $ export LANGUAGE="pt:pt_BR:es:it:fr"

Pour en savoir plus, consultez info gettext et lisez la section « The LANGUAGE variable ».

L’ordre de tri des caractères par sort(1) et ls(1) est affecté par la régionalisation. L’export LANG=en_US.UTF-8 trie dans l’ordre du dictionnaire A->a->B->b...->Z->z, tandis que l’export LANG=C.UTF-8 trie dans l’ordre binaire ASCII A->B->...->Z->a->b....

Le format de date de ls(1) est affecté par les paramètres linguistiques (consultez Section 9.3.4, « Affichage personnalisé de la date et de l’heure »).

Le format de date(1) est affecté par la régionalisation. Par exemple :

 $ unset LC_ALL
 $ LANG=en_US.UTF-8 date
Thu Dec 24 08:30:00 PM JST 2023
 $ LANG=en_GB.UTF-8 date
Thu 24 Dec 20:30:10 JST 2023
 $ LANG=es_ES.UTF-8 date
jue 24 dic 2023 20:30:20 JST
 $ LC_TIME=en_DK.UTF-8 date
2023-12-24T20:30:30 JST

La ponctuation des nombres est différente selon les régions. Par exemple, dans la langue anglaise, mille virgule un est affiché comme « 1,000.1 » alors que dans la langue allemande, il est affiché comme « 1.000,1 ». Vous pouvez constater cette différence dans un tableur.

Chaque caractéristique détaillée de la variable d'environnement « $LANG » peut être remplacée en réglant les variables à « $LC_* ». Ces variables d'environnement peuvent être remplacées à nouveau par la variable réglée à « $LC_ALL ». Consultez la page de manuel locale(7) pour plus de détails. À moins que vous n'ayez de bonnes raisons de créer une configuration compliquée, n'utilisez pas ces variables et utilisez uniquement la variable « $LANG » définie à un des paramètres régionaux UTF-8.

Pour le système de bureau GNOME avec Wayland, la Section 8.2.1, « La saisie avec le clavier pour la console Linux et X Window » ne peut pas prendre en charge les langues européennes autres que l’anglais. IBus a été conçu pour prendre en charge non seulement les langues asiatiques, mais aussi les langues européennes. Les dépendances du paquet d’environnement de bureau GNOME recommandent « ibus » à travers « gnome-shell ». Le code de « ibus » a été mis à jour pour intégrer les fonctionnalités des options setxkbmap et XKB. Vous devez configurer ibus à partir de « Paramètres GNOME » ou « Réglages GNOME » pour la saisie clavier multilingue.

[Note] Note

Si ibus est actif, votre configuration de clavier X classique avec setxkbmap peut être remplacée par ibus, même dans un environnement de bureau classique basé sur X. Vous pouvez désactiver ibus si installé à l’aide de im-config pour définir la méthode de saisie à « None ». Pour en savoir plus, consultez le wiki de Debian concernant le clavier.

Étant donné que l'environnement de bureau GNOME recommande « ibus » à travers « gnome-shell », « ibus » est le bon choix comme méthode de saisie.

Les entrées multilingues dans une application sont traitées comme suit :

Keyboard                                       Application
   |                                                 ^
   |                                                 |
   +-> Linux kernel ->  Input method (ibus)  -> Gtk, Qt, X, Wayland
                          +-- Engine--+

La liste des paquets IBus et de ses moteurs est la suivante.


[Note] Note

Pour le chinois, « fcitx5 » peut être un cadriciel de méthode de saisie alternatif. Pour les aficionados d’Emacs, « uim » peut être une alternative. Dans les deux cas, vous devrez peut-être effectuer une configuration manuelle supplémentaire avec im-config. Certaines anciennes méthodes de saisie classiques telles que « kinput2 » peuvent encore exister dans le dépôt Debian, mais ne sont pas recommandées pour un environnement moderne.

J’ai trouvé très utile la méthode de saisie du japonais lancée depuis un environnement anglais (« en_US.UTF-8 »). Voici comment j’ai procédé avec iBus pour GNOME avec Wayland :

  1. Installez le paquet d’outil de saisie du japonais ibus-mozc (ou ibus-anthy) avec ses paquets recommandés tels queim-config ;

  2. Sélectionnez « Settings » → « Keyboard » → « Input Sources » → clic « + » dans « Input Sources » → « Japanese » → « Japanese mozc (anthy) » et cliquez « Add » si ce n’est déjà activé ;

  3. Vous pouvez choisir autant de « Input Sources » que vous le souhaitez ;

  4. Reconnectez-vous au compte utilisateur.

  5. Configurez chaque « Input Source » avec un clic droit sur l’icône de la barre d’outils de l’interface graphique ;

  6. Choisissez parmi les sources d’entrée installées avec SUPER+ESPACE. (en général, SUPER désigne la touche Windows)

[Astuce] Astuce

Si vous souhaitez avoir accès à l’environnement de clavier alphabétique uniquement avec le clavier japonais physique sur lequel shift-2 a " (guillemets doubles) gravé, vous sélectionnez « Japonais » dans la procédure ci-dessus. Vous pouvez entrer japonais en utilisant « Japanese mozc (ou anthy) » avec le clavier physique « US » sur lequel shift-2 a @ (marque arobase) gravé.

  • L'entrée du menu graphique pour im-config(8) est « Input method ».

  • Alternativement, exécutez « im-config " à partir de l’interpréteur de commande de l'utilisateur.

  • im-config(8) se comporte différemment selon que la commande est exécutée depuis le compte de l’administrateur ou non.

  • im-config(8) active la meilleure méthode de saisie sur le système par défaut sans intervention de l’utilisateur.

La console Linux ne peut afficher qu’un nombre restreint de caractères. Vous devez avoir un programme de terminal particulier tel que jfbterm(1) pour afficher les langues non européennes sur des consoles autres que la console graphique.

L'environnement graphique (Chapitre 7, Système d’interface graphique) peut afficher n'importe quel caractère en UTF-8 tant que les fontes requises soient installées et activées. L'encodage des données de la fonte originelle est pris en compte et est transparent pour l'utilisateur.

Avec les paramètres régionaux d’Asie de l’Est, le dessin de la boîte, les caractères grecs et cyrilliques peuvent être affichés plus larges que la largeur souhaitée et provoquer une sortie sur le terminal non alignée (consulter l’Annexe n° 11 de la norme Unicode).

Vous pouvez contourner ce problème :

  • gnome-terminal : Préférences → Profils → Nom du profil (Sans nom) → Compatibilité → Caractères de largeur ambigüe → Fins ;

  • ncurses : paramètre l'environnement export NCURSES_NO_UTF8_ACS=0.