Page suivantePage pr�c�denteTable des mati�res

3. Configuration des locales

3.1 Les fichiers et le kernel

Vous pouvez maintenant utiliser n'importe quel caract�re Unicode dans les noms de fichiers. Ni le kernel ni aucun utilitaire syst�me ne n�cessite de modifications. Ceci parce que les noms de fichiers dans le kernel peuvent �tre n'importe quoi qui ne contient ni octet nul, ni '/' (utilis� pour d�limiter les sous-r�pertoires). Quand ils sont encod�s en utilisant UTF-8, les caract�res non-ASCII ne seront jamais encod�s en utilisant un octet nul ou un slash. La seule cons�quence est que les noms de fichiers et de r�pertoires occupent plus d'octets qu'ils ne contiennent de caract�res. Par exemple, un nom de fichier contenant cinq caract�res grecs appara�tra pour le kernel comme un nom de fichier de 10 octets. Le kernel ne sait pas (et n'a pas besoin de savoir) que ces octets sont affich�s en grec.

C'est une th�orie g�n�rale, qui est vraie tant que vos fichiers restent sur un syst�me Linux. Sur les syst�mes de fichiers utilis�s depuis d'autres syst�mes d'exploitation, mount poss�de des options pour contr�ler la conversion des noms de fichiers de/vers UTF-8 :

Les autres syst�mes de fichiers (nfs, smbfs, ncpfs, hpfs, etc.) ne convertissent pas les noms de fichiers. Par cons�quent ils accepteront les noms de fichier Unicode encod�s en UTF-8 seulement si l'autre syst�me d'exploitation les supporte. Rappelez vous que pour qu'une option de montage soit appliqu�e aux prochains montages, vous devez l'ajouter � la quatri�me colonne de la ligne correspondante dans /etc/fstab.

3.2 Le kernel et les ttys

Les ttys sont en quelque sorte des tubes bidirectionnels entre deux programmes, autorisant des choses comme la r�p�tition (echoing) ou l'�dition de la ligne de commande. Quand dans un xterm, vous ex�cutez la commande "cat" sans arguments, vous pouvez entrer et �diter autant de lignes que vous voulez, elles seront r�p�t�es en retour ligne par ligne. Les actions d'�dition du kernel ne sont pas correctes, en particulier les touche Backspace et Tab ne seront pas trait�es correctement.

Pour r�soudre ce probl�me, vous devez :

Pour que ce changement soit persistant m�me � travers rlogin et telnet, vous devrez aussi :

3.3 Conversion de donn�es g�n�rales

Vous aurez besoin d'un programme pour convertir vos fichiers texte locaux (probablement ISO-8859-1) en UTF-8. L'alternative serait de continuer � utiliser des textes qui utilisent diff�rents encodages sur la m�me machine, mais ce n'est pas une bonne solution sur le long terme. Un de ces programmes est "iconv", qui est livr� avec la glibc-2.1. Tapez simplement

icon --from-code=ISO-8859-1 --to-code=UTF-8 < vieux_fichier> nouveau_fichier

Voici deux scripts shell tr�s pratiques, appel�s  "i2u" i2u.sh (pour conversion de ISO � UTF) et  "u2i" u2i.sh (pour conversion de UTF � ISO). [skip adapt..]

Si vous n'avez pas la glibc-2.1 et iconv install�s, vous pouvez utiliser GNU recode 3.5 � la place. "i2u" i2u_recode.sh est "recode ISO-8859-1..UTF-8" "u2i" u2i_recode.sh est "recode UTF-8..ISO-8859-1".
ftp://ftp.iro.umontreal.ca/pub/recode/recode-3.5.tar.gz
ftp://ftp.gnu.org/pub/gnu/recode/recode-3.5.tar.gz
Notes : vous devez utiliser GNU recode 3.5 ou plus. Pour compiler GNU recode sur des plateformes sans glibc-2 (c'est � dire sur toutes les plateformes sauf les syst�mes Linux r�cents), vous devez le configurer avec "--disable-nls", autrement l'�dition des liens �chouera.

Sinon, vous pouvez aussi utiliser CLISP � la place. Voici "i2u" et "u2i" en version lisp : i2u.lsp et u2i.lsp.
Note : Vous devez avoir une version de CLISP qui date au plus de juillet 1999.
ftp://clisp.cons.org/pub/lisp/clisp/source/clispsrc.tar.gz
D'autres programmes de conversion de donn�es existent, mais ils sont moins puissants que GNU recode. Ce sont

3.4 Les variables d'environnement locales

Vous pouvez avoir les variables d'environnement suivantes positionn�es, contenant les noms de locales :

LANGUAGE

Remplacement pour LC_MESSAGES. Seulement utilis� par GNU gettext.

LC_ALL

Remplacement pour toute les autres variables LC_* : 

LC_CTYPE, LC_MESSAGES, LC_COLLATE, LC_NUMERIC, LC_MONETARY, LC_TIME

Ce sont des variables individuelles pour : le type des caract�res et leur encodage, les messages en langue maternelle, les r�gles de classement, le format des nombres, le format des montants mon�taires, l'affichage de la date et de l'heure.

LANG

Valeur par d�faut pour toutes les variables LC_*

(Voir `man 7 locale' pour une description d�taill�e.)

Chacune des variables LC_* et LANG peuvent contenir un nom de locale de la forme suivante :

language[_territory[.codeset]][@modifier]

O� language est un code de langue ISO 639 (en minuscules), territory est un code de pays ISO 3166 (en majuscules), codeset d�signe une table de caract�res, et modifier d'autres attributs particuliers (par pour exemple indiquer un dialecte particulier d'une langue, ou une orthographe non standard).

LANGUAGE peut contenir plusieurs noms de locale, s�par�s par deux points (:).

Pour dire � votre syst�me et � toutes les applications que vous utilisez UTF-8, vous devez ajouter un suffixe d'UTF-8 � vos noms de locales. Par exemple, si vous utilisiez

LANGUAGE=de:fr:en
LC_CTYPE=de_DE

vous le changeriez en

LANGUAGE=de.UTF-8:fr.UTF-8:en.UTF-8
LC_CTYPE=de_DE.UTF-8

3.5 Cr�er les fichiers pour le support des locales

Si vous avez la glibc-2.1 ou glibc-2.1.1 ou glibc-2.1.2 install�e, v�rifiez d'abord en utilisant "localedef -help" que le r�pertoire syst�me pour le tables de caract�res est /usr/share/i18n/charmaps. Puis appliquez au fichier /usr/share/i18n/charmaps/UTF8 le patch glibc21.diff ou glibc211.diff ou glibc212.diff, respectivement. Puis cr�ez les fichiers de support pour toute les locales UTF-8 que vous voulez utiliser, par exemple :

$ localedef -v -c -i de_DE -f UTF8 /usr/share/locale/de_DE.UTF-8

G�n�ralement vous n'avez pas besoin de cr�er des variables appel�es "de" ou "fr" sans suffixe pour le code du pays, parce que ces locales sont normalement utilis�es seulement par la variable LANGUAGE, et pas par les variables LC_*. De plus LANGUAGE est seulement utilis� en remplacement de LC_MESSAGES.

3.6 Ajouter le support pour la biblioth�que C

La glibc-2.2 supportera les locales multi-octets (de plusieurs octets), en particulier les locales UTF-8 cr��es plus haut. Mais les glibc-2.1 et 2.1.1 ne la supportent pas r�ellement. Par cons�quent le seul effet r�el de la cr�ation des fichiers /usr/local/share/de_DE.UTF-8/* ci dessus est que setlocale(LC_ALL,"") retournera "de_DE.UTF-8", conform�ment � vos variables d'environnement, au lieu d'enlever le suffixe "UTF-8".

Pour ajouter le support pour la locale UTF-8, vous devriez compiler et installer la biblioth�que 'libutf8_plug.so', depuis libutf8-0.5.2.tar.gz. Puis vous pouvez positionner la variable d'environnement LD_PRELOAD pour qu'elle pointe sur la biblioth�que install�e :

export LD_PRELOAD=/usr/local/lib/libutf8_plug.so
Alors, dans chaque programme lanc� avec cette variable d'environnement positionn�e, les fonctions de libutf8_plug.so seront appel�es � la place des originales dans /lib/libc.so.6. Pour plus d'informations sur LS_PRELOAD, voyez "man 8 ld.so".

Tout cela ne sera plus n�cessaire quand la glibc-2.2 sortira.

3.7 Conversion des catalogues de messages

Maintenant ajoutons un contenu � ces nouvelles locales. Les commandes /bin/sh suivantes convertiront vos catalogues de messages au format UTF-8. Elles doivent �tre lanc�es en tant que root, et n�cessitent les programmes 'msgfmt' et 'msgunfmt' de GNU gettext-0.10.35 convert-msgcat.sh.
Ceci non plus ne sera plus n�cessaire une fois que la glibc-2.2 sera sortie, parce qu'alors la fonction gettext convertira les cha�nes de caract�res de fa�on appropri�e depuis la table de caract�res du traducteur vers la table de caract�res de l'utilisateur, en utilisant soit iconv soit librecode.


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:25