« Aide:Traduire » : différence entre les versions

Ce wiki, réalisé dans le cadre de la tournée pancanadienne Fab Labs Nation en 2017, est présenté à titre d'artefact informationnel. Il ne sera pas mis à jour jusqu'à nouvel ordre. Plus d'infos : https://fablabsnation.ca. //// This wiki, created for the Fab Labs Nation tour in 2017, is presented as an informational artefact. It will not be updated until further notice. More info : https://fablabsnation.ca.
Aller à : navigation, rechercher
Aucun résumé des modifications
Aucun résumé des modifications
 
(14 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
Avant de vous lancer dans la traduction de pages, il est important de comprendre qu'il existe deux types de traductions: celles du contenu et celles de l'interface.  
Avant de vous lancer dans la traduction de pages, il est important de comprendre qu'il existe deux types de traductions: celles du contenu et celles de l'interface.  


La traduction de contenu permet de modifier le texte que l'on peut éditer lorsque l'on modifie une page sans formulaire. Pour changer la langue du contenu, on clique sur le nom de la langue désirée dans la boîte beige qui apparaît dans les pages.  
La traduction de contenu permet de modifier le texte que l'on peut éditer lorsque l'on modifie une page dans un formulaire. Pour changer la langue du contenu, on clique sur le nom de la langue désirée dans la boîte beige qui apparaît dans les pages. Ce bouton n'est disponible que dans les pages de classes qui sont traductibles.  


La traduction de l'interface opère tout le contenu généré "automatiquement", sans que l'usager du wiki ne le définisse (on y inclut donc les modèles). Pour changer la langue de l'interface, il faut cliquer sur son nom d'usager dans le menu de haut de page, et ensuite sur le premier élément de la liste qui apparaît  (qui correspond au nom de la langue d"interface actuelle).
La traduction de l'interface opère tout le contenu généré "automatiquement", sans que l'usager du wiki ne le définisse. Pour changer la langue de l'interface, il faut cliquer sur son nom d'usager dans le menu de haut de page, et ensuite sur le premier élément de la liste qui apparaît  (qui correspond au nom de la langue d"interface actuelle).


Ces deux systèmes de traductions sont indépendants: même si votre interface est en français, le contenu peut-être affiché en anglais (et vice versa). Il existe cependant quelques astuces pour changer le contenu en fonction de la langue d'interface, décrites plus bas.
Ces deux systèmes de traductions sont indépendants: même si votre interface est en français, le contenu peut-être affiché en anglais (et vice versa). Il existe cependant quelques astuces pour changer le contenu en fonction de la langue d'interface, décrites plus bas.


Maintenant que les bases sont établies, voyons plus précisemment comment on peut opérer chaque sorte de traduction.
Maintenant que les bases sont établies, voyons plus précisément comment on peut opérer chaque sorte de traduction.


==Traduction de contenu==
==Traduction de contenu==
Ligne 13 : Ligne 13 :
Pour traduire du contenu, il faut d'abord créer une version en français ou en anglais qui servira de point de départ. Toute page qui n'existe qu'en une seule version à un lien en bas de page qui permet la création de la version traduite. Il suffit donc de cliquer sur le bouton "Créer la version en X" où X est la langue dans laquelle il faut traduire la page.  
Pour traduire du contenu, il faut d'abord créer une version en français ou en anglais qui servira de point de départ. Toute page qui n'existe qu'en une seule version à un lien en bas de page qui permet la création de la version traduite. Il suffit donc de cliquer sur le bouton "Créer la version en X" où X est la langue dans laquelle il faut traduire la page.  


On est alors amené au formulaire approprié, la langue de l'usager est changée (au besoin) pour celle de la langue de destination de la traduction en cours, le formulaire est pré-rempli avec les infos de la page dans la langue d'origine.
On est alors amené au formulaire approprié, la langue de l'interface est changée (au besoin) pour celle de la langue de destination de la traduction en cours et le formulaire est pré-rempli avec les infos de la page dans la langue d'origine.


On réécrit les champs qui sont à réécrire (d'habitude des champs textes).
On réécrit les champs qui sont à réécrire (d'habitude des champs textes) tout en prenant soin d'indiquer la langue de destination de la traduction dans le premier champs du formulaire ("Langue du contenu").


Publie.
N.B. Si la page d'origine est modifiée, il faut aller modifier son autre version pour la garder à jour. Si vous modifiez une page et vous sentez à l'aise de remplir l'information correspondante dans la langue alternative, nous vous invitons à le faire le plus tôt possible.
 
N.B. Comme on utilises pas Translate pour cette opération, si la page d'origine est modifiée, il faut aller modifier son autre version.


===Modifier les liens en fonction de la langue d'interface===
===Modifier les liens en fonction de la langue d'interface===
Ligne 67 : Ligne 65 :
Une fois les messages système créés et introduits au modèle et au formulaire, il faut adapter ces derniers pour faciliter la navigation entre langues, la traduction de contenu et la production de requêtes. Pour ce faire, suivez les étapes suivantes.
Une fois les messages système créés et introduits au modèle et au formulaire, il faut adapter ces derniers pour faciliter la navigation entre langues, la traduction de contenu et la production de requêtes. Pour ce faire, suivez les étapes suivantes.


*Ajouter un champs caché au formulaire pour dire dans quel langue on édite la page (Attribut:Est créée dans la langue). Le code à insérer au formulaire est le suivant:
*Ajouter un champs en haut du formulaire pour dire dans quel langue on édite la page (Attribut:Est créée dans la langue). Le code à insérer au formulaire est le suivant:
  <nowiki>{{{field|Est créée dans la langue|default={{int:currentlanguage}}|values=fr,en|mandatory}}}</nowiki>
  <nowiki>==={{int: template-languecréation}}===
{{{field|Est créée dans la langue|default={{int:currentlanguage}}|values=en,fr|input type=dropdown|mandatory}}} {{#info: {{int: template-aidelangue}}}}</nowiki>


*Ajouter un message en haut du formulaire pour indiquer à l'éditeur la langue dans laquelle la page est en train d'être créée. Le message est automatiquement traduit. Le code à insérer en haut du formulaire est le suivant:
*Ajouter un message en haut du formulaire pour indiquer à l'éditeur la langue dans laquelle la page est en train d'être créée. Le message est automatiquement traduit. Le code à insérer en haut du formulaire est le suivant:
Ligne 77 : Ligne 76 :


  <nowiki>{{interlanguagelink: {{{Est créée dans la langue|}}}|{{#titleparts: {{PAGENAME}}|1}}}}
  <nowiki>{{interlanguagelink: {{{Est créée dans la langue|}}}|{{#titleparts: {{PAGENAME}}|1}}}}
{{interlanguagelist: {{#titleparts: {{PAGENAME}}|1}}|interlanguagelinks}}</nowiki>
{| class="wikitable" style="ext-align:center;border:1px solid #AAA; border-collapse:collapse; clear:both; font-size:85%; margin: 0.5em 0;background:#EEF3E2;width:99%;"
!style="text-align:center; width:100%"|{{int: template-langues}}
|-
|style="text-align:center; width:100%"| {{interlanguagelist: {{#titleparts: {{PAGENAME}}|1}}|interlanguagelinks}}
|}{{#ifeq: {{#ask: [[Interlanguage reference::{{#titleparts: {{PAGENAME}}|1}}]] |format=count}}|2|{{#set: Est traduit=true}}|{{#set: Est traduit=false}}}}</nowiki>


*Search and replace sur les pages deja existantes de la classe pour leur ajouter "|Est créée dans la langue=fr" (comme les pages existantes sont en français). Pour faciliter le search and replace, vous pouvez adapter l'expression régulière suivante:
*Search and replace sur les pages deja existantes de la classe pour leur ajouter "|Est créée dans la langue=fr" (comme les pages existantes sont en français). Pour faciliter le search and replace, vous pouvez adapter l'expression suivante:


Text à trouver:
Text à trouver:
Ligne 88 : Ligne 91 :
  |Est créée dans la langue=fr
  |Est créée dans la langue=fr


La catégorie Personne est utilisée dans cette regex. Il suffit de remplacer toute mention de "Personne" par la classe désirée.
La catégorie Personne est utilisée dans cette expression. Il suffit de remplacer toute mention de "Personne" par la classe désirée.
 
*Créer des modèles pour les attributs à "valeurs possibles". Chaque champs du formulaire avec une sélection parmis des choix multiples doit avoir ses choix traduits. Pour ce faire, on ajoute le code suivant dans la définition du "{{{field|..." :
<nowiki>|mapping template=<nomdutemplate>
</nowiki>
 
On doit ensuite créer le template avec le nom choisi pour substituer <nomdutemplate>. Ce template prends les valeurs qui étaient définient dans le "field" ("values=...") et doit retourner la valeur traduite dans la langue d'interface. Pour ce faire, on utilise la fonction "switch" comme suit:
<nowiki>{{#switch: {{{1|}}}
| <valeurpossible1> = {{int: template-<nomdumessage1>}}
| <valeurpossible2> = {{int: template-<nomdumessage2>}}
| <valeurpossible3> = {{int: template-<nomdumessage3>}}
...
| {{{1|}}}
}}
</nowiki>
 
On peut ensuite s'assurer que l'attribut sera affiché au modèle de la page dans la langue d'affichage en utilisant le même template que ci dessus avec la syntaxe suivante:
 
<nowiki> {{<nomdutemplate> |1={{{nomdelattribut}}}}}</nowiki>
 
La dernière étape est de créer les messages celon la même procédure que mentionnée plus haut, décrite [https://www.mediawiki.org/wiki/Help:Extension:Translate/Unstructured_element_translation ici].


*Changer toutes les requêtes sur la catégorie de la classe en question. Pour faciliter le search and replace, vous pouvez adapter l'expression régulière suivante:
*Changer toutes les requêtes sur la catégorie de la classe en question. Pour faciliter le search and replace, vous pouvez adapter l'expression régulière suivante:
Ligne 97 : Ligne 120 :


Text à insérer:
Text à insérer:
  <nowiki>{{#ask: [[Catégorie:Personne]] $1 [[Has interlanguage link.Page content language::{{int: currentlanguage}}]] OR $1 [[Est traduit::false]]  
  <nowiki>{{#ask: [[Catégorie:Personne]] $1 [[Catégorie:Personne]]  [[Has interlanguage link.Page content language::{{int: currentlanguage}}]] OR $1 [[Est traduit::false]]  
  |$2</nowiki>
  |$2</nowiki>


La catégorie Personne est utilisée dans cette regex. Il suffit de remplacer toute mention de "Personne" par la classe désirée. Aussi faire une recherche sur <nowiki>[[Catégorie:X]] et [[Category:X]] </nowiki>pour s'assurer que toutes les requêtes étaient bien trouvées par le search and replace.
La catégorie Personne est utilisée dans cette regex. Il suffit de remplacer toute mention de "Personne" par la classe désirée. Aussi faire une recherche sur <nowiki>[[Catégorie:X]] et [[Category:X]] </nowiki>pour s'assurer que toutes les requêtes étaient bien trouvées par le search and replace.
*Changer toutes les références à <nowiki>{{PAGENAME}}</nowiki> dans le modèle de la classe concerné par le code suivant:
<nowiki>{{#titleparts: {{PAGENAME}}|1}}</nowiki>


==Autres techniques de traduction==
==Autres techniques de traduction==

Dernière version du 14 juillet 2017 à 16:36

Avant de vous lancer dans la traduction de pages, il est important de comprendre qu'il existe deux types de traductions: celles du contenu et celles de l'interface.

La traduction de contenu permet de modifier le texte que l'on peut éditer lorsque l'on modifie une page dans un formulaire. Pour changer la langue du contenu, on clique sur le nom de la langue désirée dans la boîte beige qui apparaît dans les pages. Ce bouton n'est disponible que dans les pages de classes qui sont traductibles.

La traduction de l'interface opère tout le contenu généré "automatiquement", sans que l'usager du wiki ne le définisse. Pour changer la langue de l'interface, il faut cliquer sur son nom d'usager dans le menu de haut de page, et ensuite sur le premier élément de la liste qui apparaît (qui correspond au nom de la langue d"interface actuelle).

Ces deux systèmes de traductions sont indépendants: même si votre interface est en français, le contenu peut-être affiché en anglais (et vice versa). Il existe cependant quelques astuces pour changer le contenu en fonction de la langue d'interface, décrites plus bas.

Maintenant que les bases sont établies, voyons plus précisément comment on peut opérer chaque sorte de traduction.

Traduction de contenu

Pour traduire du contenu, il faut d'abord créer une version en français ou en anglais qui servira de point de départ. Toute page qui n'existe qu'en une seule version à un lien en bas de page qui permet la création de la version traduite. Il suffit donc de cliquer sur le bouton "Créer la version en X" où X est la langue dans laquelle il faut traduire la page.

On est alors amené au formulaire approprié, la langue de l'interface est changée (au besoin) pour celle de la langue de destination de la traduction en cours et le formulaire est pré-rempli avec les infos de la page dans la langue d'origine.

On réécrit les champs qui sont à réécrire (d'habitude des champs textes) tout en prenant soin d'indiquer la langue de destination de la traduction dans le premier champs du formulaire ("Langue du contenu").

N.B. Si la page d'origine est modifiée, il faut aller modifier son autre version pour la garder à jour. Si vous modifiez une page et vous sentez à l'aise de remplir l'information correspondante dans la langue alternative, nous vous invitons à le faire le plus tôt possible.

Modifier les liens en fonction de la langue d'interface

En utilisant la syntaxe :

[[Special:MyLanguage/nomdepage]]

On peut créer des liens qui mèneront automatiquement aux pages référencées dans la langue de préférence de l'usager (celle qui configure l'interface). Ainsi, le code

 [[Special:MyLanguage/Accueil]]

qui s'instancie comme suit

Special:MyLanguage/Accueil

Pointera vers la version française ou anglaise dépendamment de votre langue d'interface actuelle.

Traduction de l'interface et des classes

La méthode présentée plus haut ne convient pas aux pages qui définissent l'interface globale du wiki (menu de gauche, bar d'outils, etc) ou les modèles et formulaires de classes. Pour ce faire, on doit créer et traduire des "messages système". Tous ces messages sont définis dans des pages du namespace "Mediawiki" et constituent les textes qui sont affichés par le système wiki par défaut (e.g. modifier, historique, etc). Ces messages ont aussi la propriété d'être automatiquement affichés dans la langue d'affichage de l'interface choisie par l'utilisateur (à ne pas confondre avec la lange d'affichage du contenu).

Par exemple, à la page Mediawiki:Aboutsite on trouve le texte à afficher (en français, comme c'est la langue par défaut du wiki) partout où l'on référence le message système "aboutsite". Nous pouvons en faire autant en écrivant :

{{int: aboutsite}} 

ce qui nous donnes:

À propos de Fab Labs Nation.

Si vous avez choisi l'anglais comme langue d'interface, vous verrez ce texte en anglais, pareillement pour le français. Tant qu'une traduction est définie pour le message dans la langue de préférence, le système affichera le message conséquemment.

Dans le cas ou le message que l'on veut modifier ou traduire existe déjà, on peut aller à la page du namespace Mediawiki correspondante et le modifier. Pour ajouter des traductions, simplement créer la page Mediawiki:NomDuMessage/XX où XX est le code de la langue et NomDuMessage est le nom du message à traduire, et y ajouter le texte à afficher.

Pour traduire des messages systèmes que l'on veut ajouter au système, suivre la procédure expliquée en détail au lien suivant:

[1]

Pour de plus amples informations sur l'utilisation de l'extension Translate pour la traduction de contenu, voir les pages d'aide officielles:

Étapes supplémentaires pour traduire une classe

Une fois les messages système créés et introduits au modèle et au formulaire, il faut adapter ces derniers pour faciliter la navigation entre langues, la traduction de contenu et la production de requêtes. Pour ce faire, suivez les étapes suivantes.

  • Ajouter un champs en haut du formulaire pour dire dans quel langue on édite la page (Attribut:Est créée dans la langue). Le code à insérer au formulaire est le suivant:
==={{int: template-languecréation}}===
{{{field|Est créée dans la langue|default={{int:currentlanguage}}|values=en,fr|input type=dropdown|mandatory}}} {{#info: {{int: template-aidelangue}}}}
  • Ajouter un message en haut du formulaire pour indiquer à l'éditeur la langue dans laquelle la page est en train d'être créée. Le message est automatiquement traduit. Le code à insérer en haut du formulaire est le suivant:
 {{int: template-averstissement-langue-edition}} : {{int: currentlanguage}}
  • Ajouter la fonction parseur de SIL (#interlanguagelink et #interlanguagelist) au modele en utilisant l'attribut juste mentionné et le template Template:Interlanguagelinks. Le code à insérer au modèle est le suivant:
{{interlanguagelink: {{{Est créée dans la langue|}}}|{{#titleparts: {{PAGENAME}}|1}}}}
{| class="wikitable" style="ext-align:center;border:1px solid #AAA; border-collapse:collapse; clear:both; font-size:85%; margin: 0.5em 0;background:#EEF3E2;width:99%;"
!style="text-align:center; width:100%"|{{int: template-langues}}
|-
|style="text-align:center; width:100%"| {{interlanguagelist: {{#titleparts: {{PAGENAME}}|1}}|interlanguagelinks}}
|}{{#ifeq: {{#ask: [[Interlanguage reference::{{#titleparts: {{PAGENAME}}|1}}]] |format=count}}|2|{{#set: Est traduit=true}}|{{#set: Est traduit=false}}}}
  • Search and replace sur les pages deja existantes de la classe pour leur ajouter "|Est créée dans la langue=fr" (comme les pages existantes sont en français). Pour faciliter le search and replace, vous pouvez adapter l'expression suivante:

Text à trouver:

{{Personne

Text à insérer:

{{Personne
|Est créée dans la langue=fr

La catégorie Personne est utilisée dans cette expression. Il suffit de remplacer toute mention de "Personne" par la classe désirée.

  • Créer des modèles pour les attributs à "valeurs possibles". Chaque champs du formulaire avec une sélection parmis des choix multiples doit avoir ses choix traduits. Pour ce faire, on ajoute le code suivant dans la définition du "{{{field|..." :
|mapping template=<nomdutemplate>
 

On doit ensuite créer le template avec le nom choisi pour substituer <nomdutemplate>. Ce template prends les valeurs qui étaient définient dans le "field" ("values=...") et doit retourner la valeur traduite dans la langue d'interface. Pour ce faire, on utilise la fonction "switch" comme suit:

{{#switch: {{{1|}}}
 | <valeurpossible1> = {{int: template-<nomdumessage1>}}
 | <valeurpossible2> = {{int: template-<nomdumessage2>}}
 | <valeurpossible3> = {{int: template-<nomdumessage3>}}
 ...
 | {{{1|}}}
 }}
 

On peut ensuite s'assurer que l'attribut sera affiché au modèle de la page dans la langue d'affichage en utilisant le même template que ci dessus avec la syntaxe suivante:

 {{<nomdutemplate> |1={{{nomdelattribut}}}}}

La dernière étape est de créer les messages celon la même procédure que mentionnée plus haut, décrite ici.

  • Changer toutes les requêtes sur la catégorie de la classe en question. Pour faciliter le search and replace, vous pouvez adapter l'expression régulière suivante:

Text à trouver:

{{#ask: \[\[Catégorie:Personne\]\] (.*) 
 \|(.*)

Text à insérer:

{{#ask: [[Catégorie:Personne]] $1 [[Catégorie:Personne]]  [[Has interlanguage link.Page content language::{{int: currentlanguage}}]] OR $1 [[Est traduit::false]] 
 |$2

La catégorie Personne est utilisée dans cette regex. Il suffit de remplacer toute mention de "Personne" par la classe désirée. Aussi faire une recherche sur [[Catégorie:X]] et [[Category:X]] pour s'assurer que toutes les requêtes étaient bien trouvées par le search and replace.

  • Changer toutes les références à {{PAGENAME}} dans le modèle de la classe concerné par le code suivant:
{{#titleparts: {{PAGENAME}}|1}}

Autres techniques de traduction

Plutôt que d'utiliser SIL pour opérer la traduction du contenu de pages, on pourrait utiliser les attributs de type "monolingual" et les codes de langues pour spécifier les différentes traductions de la valeur d'une propriété. Cette technique est décrite dans les pages suivantes: