Manuel:Mots magiques

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Magic words and the translation is 100% complete.

Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Lëtzebuergesch • ‎Türkçe • ‎dansk • ‎español • ‎français • ‎galego • ‎italiano • ‎magyar • ‎polski • ‎português do Brasil • ‎svenska • ‎русский • ‎العربية • ‎ไทย • ‎中文 • ‎日本語 • ‎한국어
OOjs UI icon puzzle-ltr.svg Extensions: Développement Extensions de balise Manuel:Fonctions d'analyse Points d’accroche Pages spéciales Manuel:Habillage Manuel:Mots magiques API Content models
Extensions MediaWiki

Les mots magiques sont une technique pour mapper une variété de chaînes de texte wiki à un ID unique associé à une fonction. A la fois les variables et les fonctions d'analyse utilisent cette technique. Tout le texte associé à cet ID sera remplacé par la valeur de retour de la fonction. Le mappage entre les chaînes de texte et l'ID est stocké dans la variable $magicWords dans un fichier qui peut être chargé en utilisant $wgExtensionMessagesFiles[].

Les mots magiques par défaut sont implémentés dans CoreParserFunctions.php .

Comment fonctionnent les mots magiques

Quand MediaWiki trouve du texte entre des doubles parenthèses ({{XXX ...}}) il doit décider si XXX est une variable, une fonction analyseur, ou un modèle. Pour cela, il pose une série de questions :

  1. Existe-t-il un ID de mot magique associé ? Dans une première étape de résolution du marquage de la forme {{XXX...}}, MediaWiki tente de traduire XXX en ID de mot magique. La table de transaction est définie par $magicWords.
    • Si aucun ID de mot magique n'est associé à XXX, XXX est supposé être un modèle.

  2. Est-ce une variable ? Si un ID de mot magique est trouvé, MediaWiki vérifie ensuite l'existence de paramètres éventuels.
    • S'il n'y a pas de paramètres, MediaWiki vérifie si l'ID du mot magique correspond à celui d'une variable. Pour cela, il récupère la liste des mots magiques utilisés en appelant MagicWord::getVariableIDs(). Cette méthode récupère sa liste d'ID de variables à partir d'une liste compilée d'ID de variables (voir Aide:Variables) et d'une liste d'ID de variables personnalisées fournie par toutes les fonctions attachées à l'accroche MagicWordwgVariableIDs.
      • Si l'ID du mot magique a été classé comme variable, les accroches de MediaWiki appellent les fonctions associées au nom de l'événement 'ParserGetVariableValueSwitch' jusqu'à ce que l'une soit trouvée, qui reconnait le mot magique et peut donner sa valeur.

  3. Est-ce une fonction d'analyse ? S'il y a des paramètres ou si l'ID du mot magique n'est pas dans la liste des ID des mots magiques des variables, alors MediaWiki suppose que le mot magique est une fonction d'analyse ou un modèle. Si l'ID du mot magique est trouvé parmi la liste des fonctions d'analyse déclarée via un appel à $wgParser->setFunctionHook($magicWordId, $renderingFunctionName), il est traité comme une fonction d'analyse et interprété en utilisant la fonction appelée $renderingFunctionName. Sinon, on suppose qu'il s'agit d'un modèle.


Définir des mots magiques

Pour que des mots deviennent réellement magiques, il faut définir deux choses :

  • une correspondance entre le texte wiki et un ID de mot magique
  • une correcpondance entre un ID de mot magique et une fonction PHP quelconque qui interprète ce mot magique.

Faire correspondre le code wiki aux ID des mots magiques

La variable $magicWords est utilisée pour associer chaque ID de mot magique avec un tableau dépendant de la langue qui décrit toutes les chaînes textuelles correspondant à l'ID du mot magique. Important: ceci ne met à jour que la correspondance i18n dans le coeur, vous devez encore écrire le code pour que MediaWiki puisse utiliser ce mot magique.

Le premier élément de ce tableau est un drapeau entier qui indique si le mot magique est sensible à la casse ou pas. Les autres éléments sont une liste des textes qui doivent être associés à l'ID du mot magique. Si le drapeau de sensibilité à la casse est à 0, toutes combinaison de casse des lettres composant le nom sera acceptée. S'il est à 1, seule la correspondance exacte des majuscules/minuscules sera associée à l'ID du mot magique. Ainsi le format est $magicWords['en'] = [ 'InternalName' => [ 0, 'NameUserTypes', 'AdditionalAliasUserCanType' ] ];

Cette association est créée par $magicWords dans un fichier enregistré en utilisant $wgExtensionMessagesFiles[].

Dans l'exemple ci-dessous, une installation du MediaWiki espagnol va associer l'ID de mot magique 'MAG_CUSTOM' avec « personalizado", "custom", « PERSONALIZADO », « CUSTOM » et toutes les autres variantes de casse. Pour un MediaWiki anglais, seul « custom » avec toutes ses variantes de casse sera associé à 'MAG_CUSTOM':

Fichier Example.i18n.magic.php:

<?php

$magicWords = [];

$magicWords['en'] = [
	'MAG_CUSTOM' => [ 0, 'custom' ],
];

$magicWords['es'] = [
	'MAG_CUSTOM' => [ 0, 'personalizado' ],
];

En partie dans le fichier extension.json :

"ExtensionMessagesFiles": {
	"ExampleMagic": "Example.i18n.magic.php"
}

Notez que « ExampleMagic » est différent de la clé que vous utiliseriez pour une fichier d'internationalisation brut (normalement simplement le titre de l'extension, par exemple « Example »). « Magic » a été délibérément ajouté pour ne pas qu'ils se marchent dessus.

Associer un ID de mot magique à une fonction PHP

Le mécanisme d'association des ID de mots magiques avec les fonctions d'interprétation dépend de son utilisation: soit en tant que fonction d'analyse soit en tant que variable. Pour plus d'informations, voir :

Enregistrer les mots magiques

Vous n'êtes pas obligé d'enregistrer les ID des mots magiques. Il vous suffit d'enregistrer les fonctions d'analyse ou les variables qui les utilisent.

Internationalisation

Voir la localisation pour l'aide.

Plus d'informations sur la définition et l'utilisation des mots magiques pour l'internationalisation sur Le pluriel et le genre pris en charge dans JavaScript, Internationalisation des espaces de noms et des alias des pages spéciales, les Sélecteurs dans les messages…; l'Utilisation de PLURAL sur tous les nombres, les Genres grammaticaux des utilisateurs, Evitez {{SITENAME}} dans les messages.

Sélecteur de comportement (mots magiques avec souligné double)

Les sélecteurs de comportement sont un type particulier de mot magique. Ils peuvent être reconnus par la double utilisation du caractère souligné (plutôt que les doubles accolades). Par exemple, __NOTOC__.

Ces mots magiques ne génèrent typiquement aucun contenu, mais modifient à la place le comportement d'une page et/ou définissent une propriété de page. Ces mots magiques sont listés dans MagicWord::mDoubleUnderscoreIDs et aussi sur Sélecteurs de comportement. L'effet de chaque sélecteur de comportement est défini dans Parser::doDoubleUnderscore(). Si aucun effet spécifique est défini, le mot magique ne fera simplement que définir une propriété de page dans la table page_props .

Voir aussi