« 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
 
(20 versions intermédiaires par 2 utilisateurs 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==


Pour traduire du contenu, il faut d'abord le "marquer" à traduire. Pour ce faire, on l'entoure de balises "translate" comme suit:
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.  


<nowiki><translate>Texte à traduire</translate></nowiki>
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.


Un message apparaitra alors en haut de la page indiquant que cette page à été marquée pour la traduction. Si vous avez les permissions requises pour opérer la traduction, vous pourrez alors cliquer sur le lien qui appairait dans ce message pour officiellement marquer la page pour traduction.  
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").


'''Important : '''Le positionement des balises "translate" est à considérer avec attention. Il devrait inclure le moins de syntaxe wiki spéciale, et idéalement seulemet du texte. Il est acceptable d'y inclure des apostrophes pour faire du gras et de l'italique ainsi que des titres, mais tout autre syntaxe spéciale (autres balises html, requêtes. nowiki, etc) devrait êtres évitées.
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.
 
Une fois la page marquée pour traduction, un lien apparaitra en haut de la page (si vous avez les permissions requises) pour effectuer la traduction en question. Cliquez le et remplissez le formulaire qui apparait (en prenant soin de choisir la langue en haut à droite)
 
Pour de plus amples informations sur l'utilisation de l'extension Translate pour la traduction de contenu, voir les pages d'aide officielles:
 
*[https://www.mediawiki.org/wiki/Help:Extension:Translate Page principale]
*[https://www.mediawiki.org/wiki/Help:Extension:Translate/Translation_example Exemple de traduction]
*[https://www.mediawiki.org/wiki/Help:Extension:Translate/Page_translation_example Exemple de marquage pour traduction (admin seulement)]


===Modifier les liens en fonction de la langue d'interface===
===Modifier les liens en fonction de la langue d'interface===
Ligne 43 : Ligne 35 :
Pointera vers la version française ou anglaise dépendamment de votre langue d'interface actuelle.
Pointera vers la version française ou anglaise dépendamment de votre langue d'interface actuelle.


==Traduction de l'interface et des modèles==
==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. 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''').
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 systeme "aboutsite". Nous pouvons en faire autant en écrivant :
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 :


  <nowiki>{{int: aboutsite}}</nowiki>  
  <nowiki>{{int: aboutsite}}</nowiki>  
Ligne 57 : Ligne 49 :
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.  
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 y ajouter le texte à afficher.  
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 qui l'on veut ajouter au système, suivre la procédure expliquée en détail au lien suivant:  
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:  


[https://www.mediawiki.org/wiki/Help:Extension:Translate/Unstructured_element_translation]
[https://www.mediawiki.org/wiki/Help:Extension:Translate/Unstructured_element_translation]
Pour de plus amples informations sur l'utilisation de l'extension Translate pour la traduction de contenu, voir les pages d'aide officielles:
*[https://www.mediawiki.org/wiki/Help:Extension:Translate Page principale]
*[https://www.mediawiki.org/wiki/Help:Extension:Translate/Translation_example Exemple de traduction]
*[https://www.mediawiki.org/wiki/Help:Extension:Translate/Page_translation_example Exemple de marquage pour traduction (admin seulement)]
===É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:
<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:
  <nowiki>{{int: template-averstissement-langue-edition}} : {{int: currentlanguage}}</nowiki>
*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:
<nowiki>{{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}}}}</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 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|..." :
<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:
Text à trouver:
<nowiki>{{#ask: \[\[Catégorie:Personne\]\] (.*)
\|(.*)</nowiki>
Text à insérer:
<nowiki>{{#ask: [[Catégorie:Personne]] $1 [[Catégorie:Personne]]  [[Has interlanguage link.Page content language::{{int: currentlanguage}}]] OR $1 [[Est traduit::false]]
|$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.
*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==
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:
*[https://www.semantic-mediawiki.org/wiki/Help:Special_property_Language_code Mécanique de base]
*[https://sandbox.semantic-mediawiki.org/w/index.php?title=Attribut:Dwc:kingdom&action=edit Exemple]
*[https://www.semantic-mediawiki.org/wiki/Semantic_MediaWiki_2.5.0 Fonctionnalités de langues à venir]
*[https://www.semantic-mediawiki.org/wiki/Help:Special_property_Has_preferred_property_label Spécification de la langue à afficher]
*[https://sandbox.semantic-mediawiki.org/wiki/Attribut:P106 Exemple d'un attribut]

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: