Help:Extension:Translate/Group configuration example/fr

Ce guide est destiné aux développeurs et aux administrateurs de traduction expérimentés. Il explique comment créer de nouveaux fichiers de configuration pour les traductions des messages de l'interface du logiciel, en détaillant ses principaux aspects. Ce guide est à utiliser en parallèle du manuel de référence de la configuration de groupes et les développeurs de l'extension vous aideront volontiers si vous avez la moindre question après avoir travaillé avec ce guide.

Pré-requis

 * l'extension Translate et
 * la.
 * la.

Ce tutoriel a été créé en se basant sur la version r97948 de l'extension (en date du 23/09/2011).

Ce tutoriel décrit le processus d'activation de la traduction pour certaines parties du projet MyBB. Vous pouvez suivre des étapes similaires afin d'ajouter d'autres projets ou fichiers à traduire. Quelques éléments sont spécifiques à translatewiki.net et vous devriez naturellement utiliser ce qui est pertinent dans votre cas, sans suivre aveuglément les étapes de ce tutoriel.

Étape 1 : vérifier notre code source
Récupérons le code source de MyBB avec  comme répertoire de travail, représenté par   dans cet exemple.

cd /home/betawiki/projects svn co http://svn.mybboard.net/mybb/branches/1.6-stable mybb

sudo -u betawiki svn co http://svn.mybboard.net/mybb/branches/1.6-stable mybb

Maintenant, il nous faut trouver les fichiers contenant les messages. Ils se trouvent dans le sous-dossier, et vous pouvez y trouver les messages source en anglais dans le sous-dossier.

Commençons donc avec, le premier fichier de localisation de notre projet.

Étape 2 : Gestion du format de fichier
Dans notre dossier d'installation de MediaWiki, dans  et  , nous pouvons voir les classes gérant le format de fichier, qui sont utilisées pour faire correspondre les groupes de messages aux fichiers de localisation de chaque projet. Vous devez fouiller un peu pour bien voir les types de formats qui sont gérés. Allons donc faire un essai et utiliser pour commencer la classe FlatPhpFFS afin de voir comment elle fonctionne avec notre fichier PHP.

Nous avons donc un fichier à faire correspondre et nous avons choisi la classe FFS pour cela. Nous avons maintenant besoin d'écrire une configuration de groupe. Il s'agit d'un fichier YAML.

Dans l', vous pourrez trouver un lien vers le fichier de. Commençons avec un fichier minimal, fourni à titre d'exemple pour la section.

Nous pouvons y aller et simplement remplacer le texte d'exemple par nos propres valeurs.

La description accepte toute syntaxe en wikitexte. Une astuce pratique montrée dans l'exemple original consiste à le rendre traduisible avec. Mais vous devez alors définir le texte par défaut sur la page Mediawiki:Message-key. Notez que l'identifiant de l'espace de noms est ajouté via sa constante, voir comment utiliser des espaces de noms personnalisés.

Nous avons besoin d'une dernière chose : la section. En partant toujours de l'exemple fourni dans la documentation :

Hum,  est le code de la langue, qui vaut   par défaut. Pour l'instant, nous ne voulons pas modifier la structure des dossiers utilisée par MyBB. Au lieu de cela, nous pouvons utiliser une fonctionnalité conçue à cet effet : la correspondance de code (code map), qui nous permet de faire correspondre le code de chaque langue avec les identifiants utilisés dans notre projet.

Et nous obtenons :

En gros cela dit que pour le code, l'élément   au dessus vaudra  , ce qui correspond au dossier des fichiers des messages en anglais. La clé  contient en général la même valeur que , mais sans le préfixe.

Bien. Enregistrons maintenant ce fichier quelque part, par exemple dans le même dossier que, en le nommant. Le fichier complet contient ceci :

Nous devons alors dire à notre extension de lire ce fichier. Ajoutez la ligne suivante dans le fichier  :

Après cela, suivez les instructions de la page gestion de groupe pour exécuter le script.

Connectons-nous, en s'assurant que l'utilisateur dispose du droit  correctement configuré, et allons sur Special:ManageMessageGroups.

Vous devriez obtenir ceci :

No valid namespace defined, got NS_MYBB. Backtrace: <...>

Dans ce cas, en lisant attentivement la documentation, vous pourriez avoir noté qu'il est nécessaire d'ajouter la ligne suivante au fichier  pour enregistrer le nouvel espace de noms dans MediaWiki :

Dans cet exemple, la valeur 1246 est utilisée, mais vous pouvez choisir n'importe quel autre numéro disponible d'espace de noms. Pour l'extension Translate, nous vous recommandons d'utiliser des numéros d'espaces de noms pairs situés dans l'intervalle 1200-1298.

Si vous rechargez maintenant la page spéciale, vous devriez voir une ligne mentionnant :

MyBB This message group has not been imported previously.

Cliquez sur le lien MyBB. Après cela, vous allez voir la liste des messages qui se trouvent dans ce fichier. Si les résultats vous conviennent, cliquez sur "Exécuter".

Après avoir cliqué sur "Execute", le fichier est traité et vous verrez des résultats s'afficher, qui devraient ressembler à ceci :

Imported new version of page MyBB:L\x5b'boardstats'\x5d/en. Imported new version of page MyBB:L\x5b'new posts'\x5d/en. Imported new version of page MyBB:L\x5b'no new posts'\x5d/en. ... Cache rebuild. All done!

Si le fichier est très gros, vous aurez besoin d'exécuter d'abord, car l'interface web ne peut importer qu'un nombre limité de messages en une fois, en raison d'une limitation sur le temps d'exécution du code PHP (le timeout) ; si vous butez sur cette limite, vous pouvez cliquer sur un bouton en bas de la page pour importer les messages restants.

Étape 3 : Ajouter un autre fichier
Maintenant, ajoutons un second fichier de traduction pour MyBB. Il y a deux manières de le faire :

Approche 1 : ajouter un nouveau fichier YAML
Ajoutez simplement un nouveau fichier YAML et enregistrez-le sous un nouveau nom. Appelez-le ensuite depuis le fichier  et suivez toutes les étapes ci-dessus. Le fichier ressemblera à quelque chose comme :

As obvious in the above example, you have to use a different ID for this new group.

While easy, this approach does not scale to hundreds of different translation units (i.e. files mapped to their message group). At some point you need to update some value, and doing it for all those files is no fun. Fortunately there is another way, shown below.

Approche 2 : syntaxe TEMPLATE
The idea is that we pull common values into a template. Then each group will take missing values from the template and there is no need to repeat them for every group.

Let's get back to MyBB example. Let's say you want to include,   and   in the translatable messages. The YAML file needs to be updated like this:

As obvious in the above example,  is defined only once; addition and removal of files is as easy as adding or removing a section in the above file.

Now if you go to the ManageMessageGroups special page, you will see three items like this:

MyBB global messages: This message group has not been imported previously. MyBB index page: This message group has not been imported previously. MyBB show thread: This message group has not been imported previously.

If there are a lot of files to be included in your project, it may be a good idea to write a script that generated your YAML file for you. An example can be found in trunk/translatewiki/StatusNet/genStatusNet-plugins.php.

Étape 4 : Groupe agrégé
Adding an aggregate group and defining the message files as its subgroups has two benefits:


 * Less work for translators to select different message groups, in particular for maintenance work. Translators can simply open the aggregate group and translate or update everything that needs updating or translation for all the groups.
 * Statistics can be reported on the aggregate group level, i.e. whole project.

In order to define an aggregate group, you need to add the following section right after the TEMPLATE section and before the definition of individual subgroups:

This gets us pretty close, but there is still one step missing. At this point, if you go to Special:Translate, you will see the MyBB parent group (and it in fact works!) but also the subgroups listed as separate groups. :(

This is the way to fix it. Add the following line to your :

$wgTranslateGroupStructure['/^out-mybb/'] = array( 'mybb' );



This takes all groups whose id match the given pattern, shows the first group, and hides everything else below that first group. A bit ugly, but it works. This construction only supports two layers, even though aggregate groups can be part of aggregate groups.

If you go to Special:Translate now, you will only see the parent group MyBB listed. Additionally, you will see a link "Show 3 subgroups"; clicking on that will show you the names of subgroups.

Check out the manual for TAGS and other sections we didn't go through in this document.

Étape 5 : Nettoyage
YAML files of projects supported by translatewiki.net are committed to the repository on Git.

In translatewiki.net, the  lines are actually in. Sandboxwiki at translatewiki.net does not have a  file, which is why we added everything in.