Localisation

La localisation (aussi appelée régionalisation) consiste à modifier le comportement d'un programme pour qu'il agisse d'une manière propre à une région. Quand un programme formate les nombres et les dates d'une façon particulière pour votre région du monde ou quand il affiche des messages (ou accepte des entrées) dans votre langue maternelle, le programme est dit localisé. Cette section décrit les étapes qu'a franchi Subversion pour être localisable.

Généralités sur la localisation

La plupart des systèmes d'exploitation modernes intègrent la notion de « paramètres régionaux courants » (current locale en anglais), c'est-à-dire la région ou le pays dont les conventions sont appliquées. Ces conventions, généralement choisies par un mécanisme de configuration pour la durée du fonctionnement d'un programme sur l'ordinateur, affectent la façon dont les données sont présentées à l'utilisateur ainsi que la façon dont les entrées de l'utilisateur sont traitées.

Sur la majorité des systèmes de type Unix, vous pouvez vérifier la valeur des paramètres régionaux en cours en lançant la commande locale :

$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL="C"
$

L'affichage comprend une liste de variables d'environnement relatives à des conventions locales et leur valeurs. Dans cet exemple, toutes les variables possèdent la valeur par défaut C, mais les utilisateurs peuvent modifier ces valeurs et leur affecter des valeurs propres à leur pays ou à leur langue. Par exemple, si quelqu'un fixe la valeur de la variable LC_TIME à fr_CA, les programmes sauront qu'il doivent afficher les dates et les heures conformément aux attentes des canadiens francophones. Et si quelqu'un fixe la valeur de la variable LC_MESSAGES à zh_TW, les programmes sauront qu'il doivent afficher les messages à destination de l'utilisateur en chinois traditionnel. Modifier la variable LC_ALL équivaut à donner à toutes les variables de paramètres régionaux la valeur choisie pour LC_ALL. La valeur de la variable LANG est utilisée par défaut pour toute variable de paramètre régional qui n'a pas de valeur attribuée. Pour voir la liste de toutes les variables de paramètres régionaux sur un système Unix, lancez la commande locale -a.

Sous Windows, la configuration des paramètres régionaux s'effectue par l'intermédiaire de l'élément « Options régionales, date, heure et langue » du panneau de configuration. Vous pouvez y voir et y sélectionner les valeurs de chacune des variables disponibles, voire personnaliser les conventions d'affichage de nombreux paramètres (à un niveau de détail presque maladif).

Utilisation des paramètres régionaux par Subversion

Le client Subversion, svn, utilise la configuration courante des paramètres régionaux de deux manières. D'abord, il prend en compte la valeur de la variable LC_MESSAGES et essaie d'afficher tous les messages dans la langue indiquée. Par exemple :

$ export LC_MESSAGES=de_DE
$ svn help cat
cat: Gibt den Inhalt der angegebenen Dateien oder URLs aus.
Aufruf: cat ZIEL[@REV]...
…

Ce comportement est identique sur les systèmes Unix et Windows. Notez cependant que, bien que votre système d'exploitation puisse supporter certaines valeurs de paramètres régionaux, Subversion ne parle peut-être pas toutes ces langues. Afin d'afficher ces messages localisés, des volontaires (humains) doivent fournir des traductions dans chaque langue. Les traductions sont écrites en utilisant le paquetage GNU gettext, ce qui produit des modules de traduction dont l'extension du nom de fichier est .mo. Par exemple, le fichier des traductions allemandes s'appelle de.mo. Ces fichiers de traductions sont installés quelque part sur votre système. Sous Unix, ils sont généralement placés dans /usr/share/locale/, alors que sous Windows on les trouve souvent dans le dossier \share\locale\ de la zone d'installation de Subversion. Une fois installé, un module est renommé d'après le programme pour lequel il fournit des traductions. Par exemple, le fichier de.mo sera peut-être finalement installé en tant que /usr/share/locale/de/LC_MESSAGES/subversion.mo. En parcourant les fichiers .mo installés, vous pouvez voir quelles langues le client Subversion parle.

La prise en compte des paramètres régionaux se fait aussi au niveau de la façon dont svn interprète vos entrées. Le dépôt stocke tous les chemins, noms de fichiers et messages de propagation en Unicode, plus exactement en UTF-8. En ce sens, le dépôt est internationalé, c'est-à-dire que le dépôt peut accepter des entrées en n'importe quelle langue. Cela signifie cependant que le client Subversion ne doit envoyer vers le dépôt que des noms de fichiers et des messages de propagation en UTF-8. Pour ce faire, il doit convertir les données depuis les paramètres régionaux courants vers l'UTF-8.

Par exemple, supposons que vous créez un fichier nommé caffè.txt et qu'ensuite, lorsque vous propagez ce fichier, vous fournissez le message de propagation suivant : « Adesso il caffè è più forte ». Le nom du fichier et le message de propagation contiennent tous deux des caractères non-ASCII, mais puisque vos paramètres régionaux sont it_IT, le client Subversion sait qu'il doit les interpréter comme de l'italien. Il utilise alors un jeu de caractères italiens pour convertir ces données en UTF-8 avant de les envoyer au dépôt.

Remarquez que bien que le dépôt exige des noms de fichiers et des messages de propagation au format UTF-8, il ne s'intéresse pas au contenu du fichier. Subversion traite le contenu des fichiers comme des chaînes d'octets « opaques » ; ni le client ni le serveur ne tentent de comprendre le jeu de caractères ou le codage du contenu d'un fichier.