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. The input method support with Fcitx
8.2.5. Un exemple pour le japonais
8.3. L’affichage de sortie
8.3.1. Configuration du terminal
8.3.2. 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

When auto-mounting a hot-pluggable USB flash drive under modern desktop environment such as GNOME, you may provide such mount option by right clicking the icon on the desktop, click "Drive" tab, click to expand "Setting", and entering "utf8" to "Mount options:". The next time this USB flash drive is mounted, mount with UTF-8 is enabled.

[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.

The keyboard system can be configured at different layers of the system.

  • Linux kernel: keyboard(5)

  • X server: setxkbmap(1), xkeyboard-config(5), environment variable XMODIFIERS

  • GUI desktop environment: Input Method framework: ibus, fcitx5

  • Application: environment variables to set its input source: GTK_IM_MODULE, QT_IM_MODULE, QT_IM_MODULES, ...

Input method framework (IM) consists of:

  • Input method engine (IME): Actual input method

  • Configuration: Handles the configuration for IBus and other services such as IME

  • Panel: User interface such as language bar and candidate selection table

Multilingual input to the application is processed roughly as:

Keyboard        UI panel    Configuration        Application
|                  ^ |           |                      ^  ^
v                  | v           v                      |  |
Linux kernel -> Input method engine (IME) -+-> Gtk, Qt -+  |
                   | ^                     |               |
                   | |                     +-> X, Wayland -+
                   v |
                IME plugin (ibus-mozc, ...)

Unlike the X Window protocol, the Wayland core protocol doesn't even support the input of accented characters. Popular Wayland Compositors, such as Mutter for GNOME or KWin for KDE, implement extension protocols such as the text-input-unstable-v3 for the text input (see "current Wayland protocols and their support status").

The text-input-unstable-v3 protocol works well with Input methods for Wayland (see "Wayland input method project post-mortem").

  • Most GUI applications are built with GUI libraries such as GTK or Qt which support this text-input-unstable-v3.

  • Popular Input Method Engines (IME), such as IBus or Fcitx (version 5), can work with this text-input-unstable-v3.

  • IMEs support text input for many languages with plugins.

  • Recent IMEs integrate X Keyboard Extension (XKB) functionalities such as setxkbmap previously provided by the X Window to support accented character text input for European languages for Wayland.

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. Install the Japanese input tool package ibus-mozc (or ibus-anthy).

  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é.

  • For Wayland:

    • The im-config package does nothing and can be removed safely.

    • You probably don't need to set environment variables except for the backward compatibility etc.

    • If you need to set environment variables, create a file such as ~/.config/environment.d/50-input-method.conf to set them.

  • For X Window:

    • Install the im-config package.

    • 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.

The Debian system can be configured to work with many international console arrangements using the console-setup package.

# dpkg-reconfigure console-setup

For the Linux console and the X Window system, this updates configuration parameters in "/etc/default/console-setup". This also configures the Linux console font. Many non-ASCII characters including accented characters used by many European languages can be made available with dead key, AltGr key, and compose key.

Il existe plusieurs composants pour configurer la console en mode caractères et les fonctionnalités du système ncurses(3).

  • Le fichier « /etc/terminfo/*/* » (terminfo(5))

  • La variable d’environnement « $TERM »(term(7))

  • setterm(1), stty(1), tic(1) et toe(1)

Si l’entrée terminfo pour xterm ne fonctionne pas avec un xterm non Debian, changez le type de terminal dans « $TERM » de « xterm » pour une version limitée en fonctionnalités comme « xterm-r6 » lorsque vous-vous connectez à distance à un système Debian. Consultez « /usr/share/doc/libncurses5/FAQ » pour davantage d’informations. « dumb » est le plus petit dénominateur commun pour « $TERM ».

Under the East Asian locale, the box drawing, Greek, and Cyrillic characters may be displayed wider than your desired width to cause the unaligned terminal output (see Unicode Standard Annex #11, 4.2 Ambiguous Characters).

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.