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 96% complete.
Outdated translations are marked like this.
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 variables et les fonctions d'analyse (fonctions parser) utilisent cette technique. Tout le texte mappé à 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

Chaque fois que MediaWiki trouve du texte entre doubles accolades ({{XXX…}}), il doit décider si XXX est une variable, une fonction analyseur, ou un modèle. Pour ce faire, 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.
    • Tout le texte mappé à cet ID sera remplacé par la valeur de retour de la fonction. Pour vérifier cela, il récupère la liste des mots magiques servant en appelant MagicWord::getVariableIDs(). Cette méthode obtient sa liste d'ID de variable à partir d'une liste codée en dur d'ID de variable (voir [[Help:Variables |Aide:Variables]]) et d'une liste d'ID de variable personnalisée fournie par toutes les fonctions attachées au point d'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 est absent de la liste des ID de mot magique 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 un 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.

En PHP intégré

Vous pouvez associer des mots magiques en ligne en PHP plutôt que via un fichier i18n. Ceci est utile lors de la définition de hooks dans LocalSettings.php

MediaWiki\MediaWikiServices::getInstance()->getContentLanguage()->mMagicExtensions['wikicodeToHtml'] = ['MAG_CUSTOM', 'custom'];

Associer un ID de mot magique à une fonction PHP

Le mécanisme pour associer les identifiants de mots magiques aux fonctions de rendu dépend du fait que le mot magique sera utilisé comme fonction parser ou comme variable. Pour plus d'informations, veuillez consulter:

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 produisent généralement aucun contenu, mais modifient plutôt le comportement d'une page et/ou définissent une propriété de page. Ces mots magiques sont répertoriés dans MagicWord::mDoubleUnderscoreIDs et aussi dans Aide:Mots magiques#Changements de comportement. L'effet de chaque changement de comportement est défini dans Parser::doDoubleUnderscore(). Si aucun effet spécifique n'est défini, le mot magique définira simplement une propriété de page dans la table page_props.

Voir aussi