ToolTranslate
Cette page décrit l'utilisation de l'outil ToolTranslate. N'hésitez pas à la traduire !
But
De nombreux outils du WMF Labs n'ont pas d'interfaces traduites, ils ne sont disponibles que dans une seule langue, en général l'anglais. Même les outils compatibles avec une interface polyglotte utilisent des méthodes inadaptées pour l'ajout de nouvelles langues et de nouvelles traductions. ToolTranslate propose à la communauté (TM) un moyen centralisé et facile d'utilisation pour traduire les outils. Les outils doivent être compatibles avec ce mécanisme, ils doivent être retravaillés pour utiliser dans l'interface des textes dynamiques plutôt que statiques. Origine de l'outil.
Traduction
- Allez sur l'outil
- Si besoin, autorisez l'outil
- Choisissez un outil à traduire dans le menu déroulant du haut ou dans la liste de la page principale
- Choisissez ou ajoutez la langue dans laquelle vous souhaitez traduire l'outil
- Double-cliquez sur la cellule contenant le texte que vous souhaitez traduire ou améliorer
- Entrez votre texte. Vous pouvez utiliser du code HTML (sans JavaScript !). Une suggestion de traduction provenant du même mot clé d'un autre outil peut vous être proposée comme base de travail.
- Cliquez sur OK. C'est fait ! Problèmes de cache du navigateur mis à part, votre traduction devrait être visible dans l'outil en question lors de sa prochaine utilisation.
Ressources
- Vidéo de démonstration à propos de l'interface ToolTranslate (utilisée par l'outil lui-même !)
- Outil de démonstration simple et son code source en HTML/JS
- WikiLovesMonuments (édition Wikidata) comme exemple un peu plus ambitieux
- dépôt git
Détails techniques
Les traductions sont enregistrées dans une base de données des Labs. Les versions précédentes des traductions sont conservées et les traductions sont attribuées à leurs éditeurs respectifs. Un outil "changements récents" est disponible.
Pour faciliter l'accès aux données de traduction, toutes les traductions sont aussi stockées dans des fichiers JSON, qui sont mis à jour à chaque modification. Par exemple pour "demotool1" :
- toolinfo.json, le fichier JSON contenant les informations à propos de l'outil
- en.json, le fichier JSON contenant la version en anglais de l'outil. Cela fonctionne de manière identique pour les autres langues, en utilisant le code de la langue concernée
Il existe aussi un fichier JSON contenant toutes les langues valides.
Base de données
Les données initiales sont enregistrées dans la base de données s53069__tooltranslate_p
de tools-db sur Toolforge (mysql --defaults-file=~/replica.my.cnf -h tools-db s53069__tooltranslate_p
). Les données peuvent aussi directement y être consultées si besoin.
Les tables suivantes sont disponibles :
- tool
- id | name | label | url | owner
- translation
- id | tool_id | language | key | json | user | timestamp | current
Guide pratique : HTML/JS
- Copiez le code de démonstration
- Le code JS de ToolTranslate contient une liste d'options que vous pouvez utiliser
- Si vous souhaitez une chaîne traduite (qui utilise par exemple l'objet
tt
),tt.t(clé)
outt.t(clé,{lang:language_code})
la fournira pour vous - En HTML, ajoutez l'attribut
tt
à n'importe quelle balise, par exemple<span tt='clé'></span>
. - Les chaînes à traduire, qui contiennent https://bitbucket.org/magnusmanske/tooltranslate/src/d93e2e706a76be21ee02affb0bc1cdece8f087ae/public_html/demos/demotool1.html?at=master&fileviewer=file-view-default à $9 verront ces derniers automatiquement susbstitués par les attributs de balise tt1 à tt9 respectivement. Ceci permet de modifier la langue de l'interface sans découper en multiples fragments. La traduction ne sera pas modifiée si les attributs sont absents. En JavaScript,
tt.t(clé,{params:['valeur pour https://bitbucket.org/magnusmanske/tooltranslate/src/d93e2e706a76be21ee02affb0bc1cdece8f087ae/public_html/demos/demotool1.html?at=master&fileviewer=file-view-default','valeur pour https://bitbucket.org/magnusmanske/tooltranslate/src/d93e2e706a76be21ee02affb0bc1cdece8f087ae/public_html/tt.js?at=master&fileviewer=file-view-default']})
.
Guide pratique : PHP
Il existe une classe PHP que vous pouvez inclure dans Toolforge de cette manière :
require_once ( "/data/project/tooltranslate/public_html/tt.php") ;
Vous pouvez ensuite instancier la classe :
$tt = new ToolTranslation ( array ( 'tool' => 'your_tool_key' , 'language' => 'de' , 'fallback' => 'en' , 'highlight_missing' => true ) ) ; // Tout est facultatif sauf 'tool'
Utilisation directe
Il y a deux manières d'obtenir la traduction de l'interface en PHP. L'une est d'obtenir directement une chaîne traduite
print "<p>" . $tt->t('translation_key') . "</p>" ;
Mais l'inconvénient est que la traduction ne peut être modifiée sans recharger la page.
Utilisation via JavaScript
Par ailleurs, vous pouvez ajouter des balises de traduction (voir ci-dessus) et que la classe ajoute l'invocation JS nécessaire. Un autre avantage est que la classe PHP n'a pas besoins de charger aucun des fichiers de traduction si vous n'utilisez jamais la traduction directe ci-dessus. Pour utiliser la traduction HTML/JS, la section <head> du HTML de vos pages doit contenir
<script src="https://tools-static.wmflabs.org/tooltranslate/tt.js">
(Il vous faudra aussi jQuery). Lors de la génération de la page, au lieu d'écrire ce qui précède, écrivez :
print "<p tt='translation_key'></p>" ;
Dans la sortie, probablement vers la fin, vous devrez ajouter le code d'invocation :
print $tt->getJS() ;
Ceci initialisera le JS nécessaire, en reproduisant les paramètres utilisés dans l'instance PHP (langue de repli, etc.). Si vous souhaitez un menu de traduction, ajoutez un élément conteneur dans votre code HTML
<div id='tooltranslate_wrapper'></div>
puis passez l' accesseur jQuery en tant que paramètre lors de l'appel de la méthode getJS :
print $tt->getJS('#tooltranslate_wrapper') ;
Voir cet outil pour un exemple d'application.