Aide:Autotranslate

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
This page is a translated version of a page Help:Autotranslate and the translation is 100% complete. Changes to the translation template, respectively the source language can be submitted through Help:Autotranslate and have to be approved by a translation administrator.
Résultat usuel du modèle.
Structure habituellement nécessaire pour créer un modèle auto-traduit.

Ceci concerne la manière de définir un modèle auto-traduit à l'aide de {{Autotranslate}} (voir ici sa documentation) et vise à expliquer le procédé d'une manière plus claire et détaillée.

Pourquoi localiser ?

Wikimedia Commons est un projet multilingue. Notre objectif est de fournir une interface adaptée à chaque utilisateur, partout dans le monde.

Quand utiliser Autotranslate ?

Si vous désirez traduire juste un mot ou une une simple phrase, utilisez MediaWiki-messages ou {{LangSwitch}}. Si vous avez besoin de quelque chose de plus complexe, Autotranslate constitue le bon choix. Voir Commons:Localisation pour avoir un aperçu de ce que sont l'internationalisation et la localisation.

Qu'effectue le modèle Autotranslate ?

Autotranslate "appelle", en fonction de la langue de l'interface choisie par l'utilisateur, une sous-page du modèle spécifié par le paramètre |base=. Ceci signifie qu'un traitement est effectué côté serveur et que seul le contenu du sous-modèle est présenté à l'utilisateur. Le modèle détecte la langue choisie par l'utilisateur d'après {{int:lang}}; dans votre cas, cela donnerait en et par conséquent, Autotranslate appellerait la sous-page /en, si elle existait.

Inconvénients

Autotranslate enregistre les traductions dans les différentes langues, sur des sous-pages de modèle, différentes. Cela a un inconvénient significatif : les sous-pages du modèle doivent être maintenues séparément pour rester cohérentes et être à jour. Sinon les utilisateurs de différentes langues verront différentes instructions ou différentes informations. Ceci peut poser problème lorsque les utilisateurs rentreront en action les uns avec les autres. C'est pourquoi si les utilisateurs modifient une version, ils doivent soit mettre à jour toutes les autres versions soit mettre une marque d'obsolescence sur tous les autres modèles de sous-page. En pratique, il arrive souvent que seule la sous-page /en (version anglaise) soit mise à jour; la coordination de la mise à jour des traductions reste un problème sur Commons (et ne concerne pas que les modèles auto-traduits…). Néanmoins, il existe actuellement une solution qui vous assure que toutes les traductions sont synchronisées: l'extension Translate.

Performances

Comme vous pouvez le voir sur le diagramme ci-joint, cinq modèles sont concernés. Autotranslate lui-même vérifie si une page existe. Ceci est rangé parmi les fonctions coûteuses de l'analyseur. Néanmoins un Autotranslate est meilleur que 10 sélécteurs de langue. Si vous rencontrez {{Autotranslate}}, faites atention que trop de grosses fonctions d'analyse sur la même page peuvent stopper le rendu des modèles.

Boucle dans le modèle

"Template loop detected:Template:Autotranslate" Vous pouvez rencontrer cet affreux message d'erreur si vous utilisez Autotranslate. L'explication est que vous employez deux modèles (l'un appelant l'autre) et qu'ils appellent tous deux Autotranslate, ce qui provoque une boucle {{Autotranslate}}. Parce qu'il utilise une autre base, il n'y a pas vraiement de problème et le message d'erreur est le seul élément qui peut vous ennuyer. La solution : utiliser {{Autotranslate/clone 1}}, {{Autotranslate/clone 2}}, {{Autotranslate/clone 3}} ou {{Autotranslate/clone 4}}.

Pages nécessaires

Modèle principal

Connu également comme le modèle principal (front-template) similaire à :

{{Autotranslate|base=Example|1={{{1|}}}|2={{{2|}}}}}<noinclude>

{{documentation}}
</noinclude>
  • il est très concis
  • Lorsque vous créez des modèles de discussion utilisateur, il est important de permettre que ce modèle soit substituable (subst:).
  • Le <noinclude> empêche les autres éléments d'être affichés lorsque ce modèle est utilisé
  • Le paramètre de base est simplement le nom du modèle sans l'espace de noms.
  • Ensuite viennent les paramètres numériques (au moins 10 sont autorisés). Ils seront transmis aux sous-pages de traduction. Seuls les paramètres numériques sont transmis. Mais vous pouvez bien sûr, convertir un paramètre nommé, en paramètre numérique : |1={{{namedParameter|}}}
  • {{Documentation}} charge la sous-page /doc du modèle et place ceci dans un conteneur de sorte que le fond apparaisse en gris avec quelques liens (éditer, afficher)
  • Les catégories sont habituellement transcluses via la documentation. Ceci permet aux administrateurs de protéger le modèle principal tout en permettant aux utilisateurs expérimentés de pouvoir encore catégoriser le modèle via la sous-page /doc (où elles sont ajoutées à l'intérieur de balises <includeonly>).

Sous-pages des langues : /en, /de, /fr, …

Ils ressembleront à cela :

{{Example/layout
|1={{{1|}}}
|2={{{2|}}}
|lang=en
|text1=This is an example text.
|text2=or just a phrase
}}<noinclude>
{{translated tag|insert type here - for types see [[Template:Translated tag]]}}
</noinclude>
  • Ces sous-pages sont pour la traduction, pas pour des opérations compliquées
  • Les transformations complexes des paramètres d'entrée doivent être faites dans des modèles séparés, avant de les passer à la sous-page de la langue, c'est à dire sur le modèle principal et en utilisant les modèles de prétraitement.
  • Chouchoutez les traducteurs et ils vous le rendront
  • Ces modèles doivent toujours se synchroniser. Sinon les utilisateurs de certaines langues pourront être lésés.
  • Vous devez toujours transmettre au modèle de sortie, les paramètres que la sous-page a reçus
  • Passer également le raccouci de la langue actuelle (le nom de la sous-page, toujours en dur, n'utilisez pas {{SUBPAGENAME}} mais vous pouvez le remplacer par {{subst:SUBPAGENAME}})
  • N'ajoutez aucun lien codé en dur vers ces sous-pages de langue. Si toutes les sous-pages de langue doivent se partager un même lien, et qu'il n'est pas possible de le placer dans la sous-page /layout, créez une nouvelle sous-page du modèle (par exemple Template:Example/link) et utilisez le lien de cette manière : Exemple de texte [[{{Example/link}}|avec un lien]] à l'intérieur car je n'aime pas qu'il soit dans la barre.. Si vous devez changer le lien ultérieurement, vous n'avez pas à modifier des tonnes de traductions.
  • N'essayez pas d'utiliser des textes de repli comme : {{{1|texte de repli}}} Cela ne fonctionne pas parce que Autotranslate passe toujours l'ensemble des paramètres, même s'ils sont vides. Il faudra transformer l'exemple en {{#if: {{{1|}}}|{{{1}}}|fallback text}}

Sous-page d'affichage : /layout

Ici vous pouvez être créatif mais en suivant certaines règles de base :

  • Utilisez {{LayoutTemplateArgs}} pour autoriser les traductions Ajax (Ajax-in-page-translation) de votre modèle lorsqu'on clique sur un lien de langue. Suivez absolument les instructions de {{LayoutTemplateArgs}}. Le script Ajax appelle actuellement les sous-pages de langue directement. Cela signifie que vous devez initialiser le nom des paramètres avec des nombres car le modèle de sous-page n'accepte que les nombres, ou vous devez vérifier que toutes les sous-pages de langue acceptent aussi les paramètres nommés.
  • Encadrez chaque image avec {{ImageNoteControl}}: {{ImageNoteControl|notes=off|img=[[File:Example.jpg|60px]]}}. Sinon les vandales peuvent ajouter des notes inappropriées aux images (et ils aiment cela). Veillez à protéger le téléversement des fichiers que vous voulez utiliser.
  • Utiliser des tables pour afficher est obsolète car cela pose de sérieux problèmes aux lecteurs d'écran pour les interpréter. Les remplacer est parfois un défi.

Voici un exemple :

<div style="border:2px solid grey; width:99%; padding:5px; min-height:70px" class="layouttemplate">
{{LayoutTemplateArgs|template=Example|args=
{{urlencode: 1={{{1|}}} }}
{{urlencode: 2={{{2|}}} }}
{{urlencode: 3={{{3|}}} }}
}}
{{ImageNoteControl|notes=off|img=[[File:Example.jpg|60px|left]]}} Some text here.
----
{{Example/lang}}
</div>

Sous-page de langue : /lang

Bonne nouvelle ! Vous n'avez pas à vous préoccuper de cette page. Après avoir réalisé tous les autres éléments, créez-la avec uniquement le contenu {{subst:lle}}, ce qui va automatiquement rechercher toutes les sous-pages de langue et ajouter les liens vers celles qui existent.

Dans le cas où vous souhaiteriez faire des adaptations, les liens externes c'est à dire via {{urlencode: … }}, doivent être utilisés pour des raisons de performance (en comparaison avec la syntaxe des liens wiki internes).[r]

Sous-page de documentation : /doc

Il est bon d'utiliser la structure suivante :

{{TemplateBox
|1=
|1d=
|1def=
|1stat=required
|2=
|2d=
|2def=
|2stat=required
|name=Example
|desc=
|namespace=
|usergroup=
|placement=
|usage-notes=
|type=
|example=
|i18n-method=autotranslate
|i18n-desc=
|seealso=
* [[Example]]
|setscats=
|lines=
|shorthand=
|relieson=
}}

<includeonly>
[[Category:Example templates]]
</includeonly>

Utilisation de Extension:Translate

Shortcut

L'Extension Translate est actuellement dans la plupart des cas, le système recommandé pour l'auto-traduction :

  • Familiarisez-vous d'abord avec la manière de baliser une page pour la traduction.
  • Le squelette est la page marquée pour être traduite (c'est à dire celle qui sera ajoutée au système Special:Translate). Cela ne peut pas être la page du modèle lui-même, qui ne doit contenir que {{Autotranslate}}. C'est pourquoi il faut placer ce squelette dans une sous-page, de préférence /i18n. Les traductions seront alors créées (automatiquement) sur /i18n/langcode.
  • Le squelette peut et doit contenir tout le balisage avec les chaînes protégées contre la traduction. Le système Translate va recopier automatiquement ce wikicode dans toutes les sous-pages, mais cette duplication n'est pas un problème car elle se fait automatiquement. Si vous adaptez un modèle qui utilise l'ancien système d'auto-traduction, vous pouvez appeler le modèle /layout à partir du squelette, mais cela n'est pas recommandé.
  • Il n'est point besoin de lister les traductions manuellement, donc supprimez toutes les sous-pages /lang. La balise <languages/> doit automatiquement lister les traductions disponibles, mais cela n'est pas nécessaire.
  • Le modèle principal doit être adapté et ressemble à :
{{Autotranslate|base=Example/i18n|1={{{1|}}}|2={{{2|}}}}}<noinclude>
{{documentation}}
</noinclude>
  • Après que la sous-page /i18n ait été marquée pour la traduction (par vous, ou par un administrateur de traduction), un robot viendra automatiquement mettre à jour toutes les pages qui sont des traductions. La première fois qu'une version de page est marquée pour être traduite, le robot crée la sous-page /en qui sera utilisée comme langue principale de repli par Autotranslate. Les modifications faites dans la sous-page /i18n n'auront pas d'effet sur le rendu du modèle, tant que la page ne sera pas marquée pour être traduite.
  • Utilisez ext.translate comme le |i18n-method= du modèle de documentation. Faites attention au paramètre |i18n-sub-page=, car s'il est présent, il peut conduire à une valeur inattendue (la valeur par défaut est i18n, sauf si vous omettez le paramètre name, et ne doit pas être modifié).
  • Le gros avantage est que, les mises à jour passées en paramètre au modèle de sortie, sont maintenant aussi faciles comme elle ne l'ont jamais été auparavent. En plus vous avez un aperçu du progrès des traductions et les traducteurs n'ont plus à s'embrouiller avec la structure compliquée des modèles. Finalement, le modèle principal peut être complètement protégé; les modifications sont encore modifiables et même la sous-page /i18n.
  • Vous trouverez une exemple sur Special:PrefixIndex/Template:TemplateBox.