Chapitre 24. Localisation - Utilisation et configuration de l'I18N/L10N

24.1. Synopsis

FreeBSD est un projet à très large audience avec des utilisateurs et des contributeurs provenant du monde entier. Ce chapitre discute des fonctions d’internationalisation et de localisation de FreeBSD qui permettent aux non-anglophones de travailler. Il y a de nombreux aspects de l’implémentation i18n au niveau système et application, et quand ce sera possible nous renverrons le lecteur à des sources de documentation plus spécifiques.

Après la lecture de ce chapitre, vous connaîtrez:

  • Comment les différentes langues et "locales" sont codées sur les systèmes d’exploitation modernes.

  • Comment paramétrer les "locales" pour votre interpréteur de commandes.

  • Comment configurer la console pour d’autres langues que l’anglais.

  • Comment employer le système X Window efficacement avec différentes langues.

  • Où trouver plus d’informations sur l’écriture d’applications conformes à la norme i18n.

Avant de lire ce chapitre, vous devrez:

24.2. Les bases

24.2.1. Qu’est-ce que I18N/L10N?

Les développeurs ont raccourci le terme internationalisation en I18N, en comptant le nombre de lettres entre la première et la dernière du mot internationalisation. L10N utilise le même principe, et provient du mot "localisation". Combinées ensemble, les méthodes I18N/L10N, les protocoles, et les applications conformes permettent aux utilisateurs d’utiliser la langue de leur choix.

Les applications I18N sont programmées en utilisant des kits I18N par dessous les bibliothèques. Cela permet aux développeurs d’écrire un simple fichier et traduire les menus et textes affichés dans chaque langue. Nous encourageons fortement les programmeurs à suivre cette convention.

24.2.2. Pourquoi devrais-je employer l’I18N/L10N?

I18N/L10N est utilisé à chaque fois que vous désirez afficher, entrer, ou traiter des données dans des langues autres que l’anglais.

24.2.3. Quelles sont les langues supportées par l’I18N?

I18N et L10N ne sont pas spécifiques à FreeBSD. Actuellement, on peut choisir parmi la plupart des langues principales du monde, y compris mais pas seulement: le chinois, l’allemand, le japonais, le coréen, le français, le russe, le vietnamien et d’autres.

24.3. Utiliser la localisation

Dans toute sa splendeur, I18N n’est pas spécifique à FreeBSD et est une convention. Nous vous encourageons à aider FreeBSD à suivre cette convention.

Le paramétrage des "locales" est basé sur trois termes principaux: le code de la langue, le code du pays, et le codage des caractères. Les noms de "locales" sont construits à partir de ces trois éléments comme suit:

CodeLangue_CodePays.CodageCaractères

24.3.1. Codage de la langue et du pays

Afin de localiser un système FreeBSD pour une langue spécifique (ou tout autre UNIX® supportant l’I18N), l’utilisateur doit déterminer les codes spécifiques pour le pays et la langue (les codes pays indiquent aux applications quelle variation d’une langue donnée utiliser). De plus, les navigateurs Web, les serveurs SMTP/POP, les serveurs Web…​ agissent en fonction de ces codes. Ce qui suit est un exemple de codes langue/pays:

Code langue/paysDescription

en_US

Anglais - Etats Unis

ru_RU

Russe pour la Russie

zh_TW

Chinois traditionnel pour Taiwan

24.3.2. Codage des caractères

Certaines langues utilisent les codages non-ASCII sur 8 bits ou codent des caractères sur plusieurs octets, voir multibyte(3) pour plus de détails. Les vieilles applications ne les reconnaissent pas ou les remplacent à tord par des caractères de contrôle. Les applications récentes reconnaissent normalement les caractères 8 bits. En fonction de l’implémentation, les utilisateurs devront peut être compiler une application avec le support des caractères sur 8 bits ou multi-octets, ou la configurer correctement. Afin d’accepter l’usage et le traitement de tels caractères, le catalogue des logiciels portés de FreeBSD fournit pour certains programmes une version dans chaque langue. Référez-vous à la documentation I18N de chaque logiciel porté respectif.

Spécifiquement, l’utilisateur doit consulter la documentation de l’application pour décider de comment la configurer correctement ou comment passer les valeurs correctes à la procédure configure, au Makefile ou au compilateur.

Quelques éléments à garder à l’esprit sont:

  • Les jeux de caractères au codage simple des caractères de la bibliothèque C (voir multibyte(3)), par exemple ISO8859-1, ISO8859-15, KOI8-R, et CP437.

  • Les codages étendus ou multi-octets, e.g. EUC, Big5.

Vous pouvez contrôler la liste des jeux de caractères actuellement actifs dans le registre de l’IANA.

FreeBSD utilise à la place un codage des "locales" compatible avec X11.

24.3.3. Applications I18N

Dans le système de logiciels portés et pré-compilés de FreeBSD, les applications I18N ont été nommées avec I18N dans leur nom pour une identification aisée. Cependant, elles ne supportent pas toujours la langue désirée.

24.3.4. Configurer les "locales"

Généralement il est suffisant d’exporter le nom de la "locale" grâce à la variable LANG sous l’interpréteur de commandes utilisé lors de la session. Cela pourra être fait dans le fichier ~/.login_conf de l’utilisateur ou le fichier de configuration de l’interpréteur de commandes de l’utilisateur (~/.profile, ~/.bashrc, ~/.cshrc). Il n’est pas nécessaire de configurer toutes les autres variables de localisation comme LC_CTYPE, LC_CTIME. Veuillez consulter la documentation de FreeBSD spécifique à votre langue pour plus d’informations.

Vous devrez configurer les deux variables d’environnement suivantes dans vos fichiers de configuration:

  • LANG pour la famille de fonctions POSIX® setlocale(3)

  • MM_CHARSET pour le jeu de caractères MIME des applications

Cela comprend la configuration de l’interpréteur de commandes, la configuration spécifique des applications, et celle de X11.

24.3.4.1. Méthodes de configuration des "locales"

Il existe deux méthodes pour configurer les "locales", elles sont décrites ci-dessous. La première (celle qui est recommandée) est d’assigner les variables d’environnement dans une classe de session, et la seconde est d’ajouter le paramétrage des variables d’environnement dans les fichiers d’initialisation de l’interpréteur de commandes du système.

24.3.4.1.1. Méthode utilisant les classes de session utilisateur

Cette méthode permet d’assigner une fois pour toute les variables d’environnement nécessaires pour le nom des "locales" et le jeu de caractères MIME et cela pour toutes les sessions au lieu de le faire à chaque nouvelle session par l’intermédiaire de la configuration des fichiers d’initialisation de l’interpréteur de commandes. La configuration au niveau utilisateur peut être faite par l’utilisateur lui-même et la configuration au niveau administrateur demande les privilèges de super-utilisateur.

24.3.4.1.1.1. Configuration au niveau utilisateur

Voici un exemple minimal d’un fichier .login_conf dans le répertoire personnel d’un utilisateur, fichier qui a les deux variables fixées pour le codage Latin-1:

me:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:

Voici un exemple de fichier .login_conf qui fixe les variables pour le chinois traditionnel dans le codage BIG-5. Notez les nombreuses variables supplémentaires paramétrées parce que certains logiciels ne respectent pas les variables des "locales" correctement pour le chinois, le japonais, et le coréen.

#Users who do not wish to use monetary units or time formats
#of Taiwan can manually change each variable
me:\
	:lang=zh_TW.Big5:\
	:setenv=LC_ALL=zh_TW.Big:\
	:setenv=LC_COLLATE=zh_TW.Big5:\
	:setenv=LC_CTYPE=zh_TW.Big5:\
	:setenv=LC_MESSAGES=zh_TW.Big5:\
	:setenv=LC_MONETARY=zh_TW.Big5:\
	:setenv=LC_NUMERIC=zh_TW.Big5:\
	:setenv=LC_TIME=zh_TW.Big5:\
	:charset=big5:\
	:xmodifiers="@im=gcin": #Set gcin as the XIM Input Server

Voir la configuration au niveau administrateur et la page de manuel login.conf(5) pour plus de détails.

24.3.4.1.2. Configuration au niveau administrateur

Vérifiez que que la classe de session d’utilisateur dans /etc/login.conf fixe la bonne langue. Soyez sûr que ces paramètres apparaissent dans /etc/login.conf:

nom_langue:intitulé_comptes:\
	:charset=jeu_caractères_MIME:\
	:lang=nom_locale:\
	:tc=default:

Donc si l’on reste sur notre exemple précédent utilisant le Latin-1, cela donnera quelque chose comme:

german:German Users Accounts:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:\
	:tc=default:

Avant de modifier les classes de session des utilisateurs, exécutez la commande suivante:

# cap_mkdb /etc/login.conf

pour rendre visible à l’intégralité du système la nouvelle configuration du fichier /etc/login.conf.

24.3.4.1.3. Modifier les classes de session avec vipw(8)

Utilisez vipw pour ajouter de nouveaux utilisateurs, et créer une entrée ressemblant à celle-ci:

utilisateur:mot_de_passe:1111:11:langue:0:0:Nom d'utilisateur:/home/utilisateur:/bin/sh
24.3.4.1.4. Modifier les classes de session avec adduser(8)

Utilisez adduser pour ajouter de nouveaux utilisateurs, et faites ce qui suit:

  • Paramétrez defaultclass = langue dans /etc/adduser.conf. Gardez à l’esprit que vous devez dans ce cas entrer une classe par default (défaut) pour tous les utilisateurs d’autres langues.

  • Une variante est d’entrer la langue spécifiée à chaque fois que adduser(8) affiche

    Enter login class: default []:
  • Une autre alternative est d’employer ce qui suit pour chaque utilisateur de langue différente que vous désirez ajouter:

    # adduser -class langue
24.3.4.1.5. Modifier les classes de session avec pw(8)

Si vous utilisez pw(8) pour ajouter de nouveaux utilisateurs, appelez la fonction de cette manière:

# pw useradd nom_utilisateur -L langue
24.3.4.1.6. Méthode utilisant les fichiers d’initialisation de l’interpréteur de commandes

Cette méthode n’est pas recommandée parce qu’elle demande une configuration différente pour chaque interpréteur de commandes choisi. Utilisez la méthode utilisant les classes de session utilisateur à la place.

Pour ajouter le nom de la "locale" et le jeu de caractère MIME, positionnez juste les deux variables d’environnement comme montré ci-dessous dans les fichiers d’initialisation de l’interpréteur de commandes /etc/profile et/ou /etc/csh.login. Nous utiliserons la langue allemande comme exemple ci-dessous:

Dans /etc/profile:

LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET

Ou dans /etc/csh.login:

setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO-8859-1

Alternativement, vous pouvez ajouter les instructions précédentes à /usr/shared/skel/dot.profile (similaire à ce qui fut utilisé dans /etc/profile ci-dessus), ou /usr/shared/skel/dot.login (similaire à ce qui fut utilisé dans /etc/csh.login ci-dessus).

Pour X11:

Dans $HOME/.xinitrc:

LANG=de_DE.ISO8859-1; export LANG

Ou:

setenv LANG de_DE.ISO8859-1

En fonction de votre interpréteur de commandes (vois ci-dessus).

24.3.5. Configuration de la console

Pour tous les ensembles de jeu de caractères utilisés par la bibliothèque C, positionnez les bonnes polices de caractères pour la console dans /etc/rc.conf pour la langue en question avec:

font8x16=nom_police
font8x14=nom_police
font8x8=nom_police

Le nom_police provient ici du répertoire /usr/shared/syscons/fonts, sans le suffixe .fnt.

Vérifiez également que vous avez paramétré les bonnes tables de clavier et de correspondance d’affichage pour votre jeu de caractères C par l’intermédiaire de sysinstall (/stand/sysinstall sous les versions de FreeBSD antérieures à la 5.2). Une fois dans sysinstall, sélectionnez Configure, puis Console. Alternativement, vous pouvez ajouter ce qui suit au fichier /etc/rc.conf:

scrnmap=table_correspondance_affichage
keymap=nom_table_clavier
keychange="numéro_touche_fonction séquence"

La table_correspondance_affichage ici provient du répertoire /usr/shared/syscons/scrnmaps sans le suffixe .scm. Une table de correspondance d’affichage avec une police de correspondance est généralement nécessaire pour passer de 8 à 9 bits la matrice de caractère d’une carte VGA dans une zone pseudo-graphique, i.e., déplacer les lettres en dehors de cette zone si la police d’écran utilise une colonne de 8 bits.

Si vous avez le "daemon" moused activé par défaut grâce à la ligne suivante dans votre /etc/rc.conf:

moused_enable="YES"

alors lisez les informations sur le curseur de souris dans le paragraphe suivant.

Par défaut le curseur du pilote syscons(4) de la console occupe la zone d’adresses 0xd0-0xd3 dans le jeu de caractères. Si votre langue utilise cette zone, vous devez déplacer la zone du curseur en dehors. Pour effectuer cela sous FreeBSD, ajoutez la ligne suivante dans /etc/rc.conf:

mousechar_start=3

Le nom_table_clavier provient ici du répertoire /usr/shared/syscons/keymaps sans le suffixe .kbd. Si vous n’êtes pas sûr de la table de clavier à utiliser, vous pouvez employer kbdmap(1) pour tester la table sans avoir à redémarrer.

Le keychange est généralement utilisé pour programmer les touches de fonction pour correspondre avec le type de terminal sélectionné parce que les séquences de touches de fonction ne peuvent être définies dans la table de clavier.

Soyez également sûr de configurer le type de console correct dans le fichier /etc/ttys pour toutes les entrées ttyv*. Les correspondances actuellement pré-définies sont:

Jeu de caractèresType de terminal

ISO8859-1 ou ISO8859-15

cons25l1

ISO8859-2

cons25l2

ISO8859-7

cons25l7

KOI8-R

cons25r

KOI8-U

cons25u

CP437 (jeu de caractères VGA par défaut)

cons25

US-ASCII

cons25w

Pour les langues au caractères étendus ou multi-octets, utilisez le logiciel porté adéquat de votre répertoire /usr/ports/langue. Certains logiciels apparaissent comme utilisant la console alors que le système lui voit un vtty série, par conséquent vous devez réserver suffisamment de vttys pour X11 et la console pseudo-série. Voici une liste partielle des applications pour utiliser d’autres langues sous la console:

LangueEmplacement

Chinois traditionnel (BIG-5)

chinese/big5con

Japonais

japanese/kon2-16dot ou japanese/mule_freewnn

Coréen

korean/han

24.3.6. Configuration d’X11

Bien qu’X11 ne fasse pas partie du projet FreeBSD, nous avons inclus quelques éléments d’informations ici pour les utilisateurs de FreeBSD. Pour plus de détails, référez-vous au site Web d’Xorg ou à celui du serveur X11 que vous utilisez.

Dans le fichier ~/.Xresources, vous pouvez en plus adapter les paramètres I18N spécifiques des applications (e.g., polices de caractères, menus, etc…​).

24.3.6.1. Affichage des polices de caractères

Installez le serveur Xorg (x11-servers/xorg-server) ou le serveur XFree86™ (x11-servers/XFree86-4-Server), puis installez les polices de caractères TrueType® de la langue concernée. Un paramétrage correct des "locales" devrait vous permettre de visualiser les menus dans la langue que vous avez choisie etc.

24.3.6.2. Saisie de caractères non-anglais

Le protocole "X11 Input Method" - méthode de saisie pour X11 (XIM) est un nouveau standard pour tous les clients X11. Toutes les applications X11 devraient être écrites en tant que clients XIM qui reçoivent les entrées de serveurs de saisie XIM. Il existe différents serveurs XIM disponibles pour différentes langues.

24.3.7. Configuration de l’imprimante

Certains jeux de caractères de la bibliothèque C sont généralement codés en dur dans les imprimantes. Les jeux de caractères étendus ou multi-octets demandent une configuration spéciale et nous recommandons d’utiliser apsfilter. Vous pouvez également convertir le document en format PostScript® ou PDF en utilisant des convertisseurs spécifiques à la langue.

24.3.8. Noyau et systèmes de fichiers

Le système de fichiers rapide de FreeBSD (FFS) est complètement sur 8 bits, et peut donc être utilisé avec n’importe quel jeu de caractères de la bibliothèque C (voir multibyte(3)), mais il n’y a aucun jeu de caractères de stocké dans le système de fichiers; i.e., c’est du 8 bits brut et le système ne sait rien sur l’ordre du codage. Officiellement, le FFS ne supporte encore aucun jeu de caractères étendus ou multi-octets. Cependant, certains jeux de caractères étendus ou multi-octets disposent de correctifs indépendants pour FFS activant un tel support. Ce sont seulement des solutions temporaires non portables ou des "bidouilles" et nous avons décidé de ne pas les inclure dans l’arborescence des sources. Référez-vous aux sites Internet des langues respectives pour plus d’informations et pour les correctifs.

Le support FreeBSD du système fichiers MS-DOS® a la capacité paramétrable de faire la conversion entre jeux de caractères MS-DOS®, Unicode et les jeux de caractères choisis pour le système de fichiers FreeBSD. Voir la page de manuel mount_msdosfs(8) pour plus de détails.

24.4. Compiler des programmes I18N

De nombreux logiciels ont été portés pour FreeBSD avec le support I18N. Certains d’entre eux sont identifiés avec -I18N dans le nom du logiciel porté. Ces derniers et beaucoup d’autres programmes intègrent le support I18N et ne nécessitent aucune considération spéciale.

Cependant, certaines applications comme MySQL nécessitent d’avoir un fichier Makefile configuré avec le jeu de caractères spécifiques. Ceci est en général fait dans le Makefile ou effectué en passant une valeur à configure dans les sources.

24.5. Localiser FreeBSD pour des langues spécifiques

24.5.1. Russe (codage KOI8-R)

Pour plus d’informations sur le codage KOI8-R, consultez les Références KOI8-R (Jeu de caractères russes pour Internet).

24.5.1.1. Configuration des "locales"

Ajoutez les lignes suivantes dans votre fichier ~/.login_conf:

me:My Account:\
	:charset=KOI8-R:\
	:lang=ru_RU.KOI8-R:

Voir plus haut dans ce chapitre pour des exemples de configuration des "locales".

24.5.1.2. Configuration de la console

  • Ajoutez la ligne suivante à votre fichier /etc/rc.conf:

    mousechar_start=3
  • Ajoutez également les paramétres suivants dans /etc/rc.conf:

    keymap="ru.utf-8"
    scrnmap="utf-82cp866"
    font8x16="cp866b-8x16"
    font8x14="cp866-8x14"
    font8x8="cp866-8x8"
  • Pour chaque entrée ttyv* dans /etc/ttys, utilisez cons25r comme type de terminal.

Voir plus haut dans ce chapitre pour des exemples de configuration de la console.

24.5.1.3. Configuration de l’imprimante

Comme la plupart des imprimantes avec un jeu de caractères russes ont un "code page" matériel CP866, un filtre de sortie spécial pour la conversion du KOI8-R vers le CP866 est nécessaire. Un tel filtre est installé par défaut sous /usr/libexec/lpr/ru/koi2alt. Une entrée de /etc/printcap pour imprimante russe devra ressembler à:

lp|Russian local line printer:\
	:sh:of=/usr/libexec/lpr/ru/koi2alt:\
	:lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:

Consultez la page de manuel printcap(5) pour plus de détails.

24.5.1.4. Système de fichiers MS-DOS® et noms de fichiers russes

L’exemple suivant d’entrée du fichier fstab(5) active le support des noms de fichiers russes sur les systèmes de fichiers MS-DOS® montés:

/dev/ad0s2      /dos/c  msdos   rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0

L’option -L la "locale" utilisée, et -W fixe la table de conversion de caractères. Pour utiliser l’option -W assurez-vous de monter /usr avant la partition MS-DOS®, car en effet les tables de conversion sont situées dans le répertoire /usr/libdata/msdosfs. Pour plus d’informations, consultez la page de manuel mount_msdosfs(8).

24.5.1.5. Configuration de X11

  1. Effectuez tout d’abord la configuration des "locales" comme décrit plus haut dans ce chapitre.

  2. Si vous utilisez Xorg, installez le paquetage x11-fonts/xorg-fonts-cyrillic.

    Contrôlez la section "Files" de votre fichier /etc/X11/xorg.conf. Les lignes suivantes doivent être ajoutées avant toute autre entrée FontPath:

    FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/misc"
    FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi"
    FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi"

    Si vous utilisez un mode vidéo haute résolution, intervertissez les lignes 75 dpi et 100 dpi.

    Consultez le catalogue des logiciels portés pour plus de fontes cyrilliques.

  3. Pour mettre en service un clavier russe, ajoutez ce qui suit à la section "Keyboard" de votre fichier xorg.conf:

    Option "XkbLayout"   "us,ru"
    Option "XkbOptions"  "grp:toggle"

    Vérifiez également que XkbDisable est désactivé (mis en commentaire).

    Pour l’option grp:caps_toggle le passage de russe à latin se fera par l’intermédiaire de Right Alt, pour grp:ctrl_shift_toggle, le passage se fera à l’aide de la séquence Ctrl+Shift. L’ancienne fonctionnalitée de la touche CapsLock est toujours disponible via Shift+CapsLock (en mode latin uniquement). Pour l’option grp:toggle le passage du russe au latin se fera par l’intermédiaire de la touche Right Alt. L’option grp:caps_toggle ne fonctionne pas sous Xorg pour une raison inconnue.

    Si vous disposez de touches "Windows®" sur votre clavier, et que vous constatez que certaines touches non-alphabétiques ne sont pas appariées correctement en mode russe, ajoutez la ligne suivante à votre fichier xorg.conf:

    Option "XkbVariant" ",winkeys"

    Le clavier russe XKB peut ne pas fonctionner avec des applications non localisées.

localisées. Pour être un minimum localisée, une application devrait appeler la fonction XtSetLanguageProc (NULL, NULL, NULL); assez tôt dans le programme.

Consulter KOI8-R pour X Window pour plus d’instructions sur la localisation des applications pour X11.

24.5.2. Localisation du chinois traditionnel pour Taiwan

Le projet FreeBSD taiwanais dispose d’un guide sur FreeBSD en chinois à l’adresse http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/ utilisant de nombreuses applications du répertoire chinese du catalogue des logiciels portés. Le rédacteur du guide sur FreeBSD en chinois est Shen Chuan-Hsing statue@freebsd.sinica.edu.tw.

Chuan-Hsing Shen statue@freebsd.sinica.edu.tw a créé la collection FreeBSD chinoise (CFC) de logiciels en utilisant le document zh-L10N-tut taiwanais. Les logiciels pré-compilés et les fichiers de procédures sont disponibles à l’adresse ftp://freebsd.csie.nctu.edu.tw/pub/taiwan/CFC/.

24.5.3. Localisation pour la langue allemande (valable également pour tous les langues respectant le standard ISO 8859-1)

Slaven Rezic eserte@cs.tu-berlin.de a rédigé un guide sur l’utilisation des "umlauts" sur une machine FreeBSD. Le guide est écrit en allemand et est disponible sur http://user.cs.tu-berlin.de/~eserte/FreeBSD/doc/umlaute/umlaute.html.

24.5.4. Localisation pour le japonais et le coréen

Pour le japonais, référez-vous à http://www.jp.FreeBSD.org/, et pour le coréen à http://www.kr.FreeBSD.org/.

24.5.5. Documentation FreeBSD dans d’autres langues que l’anglais

Certains contributeurs à FreeBSD ont traduit des parties de la documentation FreeBSD dans d’autres langues. Les traductions sont disponibles grâce à des liens sur le site principal ou dans /usr/shared/doc.


Ce document, ainsi que d'autres peut être téléchargé sur https://download.freebsd.org/ftp/doc/

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <freebsd-questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <freebsd-doc@FreeBSD.org>.