Localization is the act of making programs behave in a region-specific way. When a program formats numbers or dates in a way specific to your part of the world or prints messages (or accepts input) in your native language, the program is said to be localized. This section describes steps Subversion has made toward localization.
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.
sous-titre 1
Understanding Locales
Comprendre la localisation
Most modern operating systems have a notion of the “current locale”—that is, the region or country whose localization conventions are honored. These conventions—typically chosen by some runtime configuration mechanism on the computer—affect the way in which programs present data to the user, as well as the way in which they accept user input.
La plupart des systèmes d'exploitation modernes intègrent une 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.
On most Unix-like systems, you can check the values of the locale-related runtime configuration options by running the locale command:
The output is a list of locale-related environment variables and their current values. In this example, the variables are all set to the default C locale, but users can set these variables to specific country/language code combinations. For example, if one were to set the LC_TIME variable to fr_CA, programs would know to present time and date information formatted according to a French-speaking Canadian's expectations. And if one were to set the LC_MESSAGES variable to zh_TW, programs would know to present human-readable messages in Traditional Chinese. Setting the LC_ALL variable has the effect of changing every locale variable to the same value. The value of LANG is used as a default value for any locale variable that is unset. To see the list of available locales on a Unix system, run the command locale -a.
L'affichage est 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.
On Windows, locale configuration is done via the “Regional and Language Options” control panel item. There you can view and select the values of individual settings from the available locales, and even customize (at a sickening level of detail) several of the display formatting conventions.
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).
sous-titre 2
Subversion's Use of Locales
Utilisation des paramètres régionaux par Subversion
The Subversion client, svn, honors the current locale configuration in two ways. First, it notices the value of the LC_MESSAGES variable and attempts to print all messages in the specified language. For example:
$ export LC_MESSAGES=de_DE
$ svn help cat
cat: Gibt den Inhalt der angegebenen Dateien oder URLs aus.
Aufruf: cat ZIEL[@REV]...
…
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]...
…
This behavior works identically on both Unix and Windows systems. Note, though, that while your operating system might have support for a certain locale, the Subversion client still may not be able to speak the particular language. In order to produce localized messages, human volunteers must provide translations for each language. The translations are written using the GNU gettext package, which results in translation modules that end with the .mo filename extension. For example, the German translation file is named de.mo. These translation files are installed somewhere on your system. On Unix, they typically live in /usr/share/locale/, while on Windows they're often found in the \share\locale\ folder in Subversion's installation area. Once installed, a module is named after the program for which it provides translations. For example, the de.mo file may ultimately end up installed as /usr/share/locale/de/LC_MESSAGES/subversion.mo. By browsing the installed .mo files, you can see which languages the Subversion client is able to speak.
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 peut souvent les trouver 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 if 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.
The second way in which the locale is honored involves how svn interprets your input. The repository stores all paths, filenames, and log messages in Unicode, encoded as UTF-8. In that sense, the repository is internationalized—that is, the repository is ready to accept input in any human language. This means, however, that the Subversion client is responsible for sending only UTF-8 filenames and log messages into the repository. To do this, it must convert the data from the native locale into UTF-8
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 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.
For example, suppose you create a file named caffè.txt, and then when committing the file, you write the log message as “Adesso il caffè è più forte.” Both the filename and the log message contain non-ASCII characters, but because your locale is set to it_IT, the Subversion client knows to interpret them as Italian. It uses an Italian character set to convert the data to UTF-8 before sending it off to the repository.
Note that while the repository demands UTF-8 filenames and log messages, it does not pay attention to file contents. Subversion treats file contents as opaque strings of bytes, and neither client nor server makes an attempt to understand the character set or encoding of the contents.
Par exemple, supposons que vous créiez un fichier nommé caffè.txt, et qu'ensuite, lorsque vous propagez ce fichier, vous fournissiez 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", et ni le client ni le serveur ne tentent de comprendre le jeu de caractères ou le codage du contenu d'un fichier.
NOTE
Character Set Conversion Errors
While using Subversion, you might get hit with an error related to character set conversions:
svn: Can't convert string from native encoding to 'UTF-8':
…
svn: Can't convert string from 'UTF-8' to native encoding:
…
Errors such as this typically occur when the Subversion client has received a UTF-8 string from the repository, but not all of the characters in that string can be represented using the encoding of the current locale. For example, if your locale is en_US but a collaborator has committed a Japanese filename, you're likely to see this error when you receive the file during an svn update.
The solution is either to set your locale to something that can represent the incoming UTF-8 data, or to change the filename or log message in the repository. (And don't forget to slap your collaborator's hand—projects should decide on common languages ahead of time so that all participants are using the same locale.)
Erreurs de conversion des jeux de caractères
Lors de l'utilisation de Subversion, vous êtes susceptible d'être confronté à des erreurs de conversion des jeux de caractères :
svn: Impossible de convertir la chaîne de l'encodage natif vers 'UTF-8':
…
svn: Impossible de convertir la chaîne de 'UTF-8' vers l'encodage natif :
…
De telles erreurs surviennent généralement quand un client Subversion reçoit une chaîne UTF-8 du dépôt et que certains caractères de cette chaîne ne peuvent pas être représentés dans le jeu de caractères local. Par exemple, si vos paramètres régionaux sont en_US et qu'un collaborateur a propagé un nom de fichier en japonais, alors il y a de grandes chances que cette erreur apparaisse lors de la réception du fichier avec svn update.
La solution consiste soit à configurer vos paramètres régionaux de manière à pouvoir traiter n'importe quelles données au format UTF-8, soit à modifier le nom de fichier ou le message de propagation dans le dépôt (et n'oubliez pas de taper sur les doigts de votre collaborateur — les projets devraient décider en amont des langues à utiliser de manière à ce que l'ensemble des collaborateurs utilisent les mêmes paramètres régionaux).