Manual:Magic words/cs



Magická slova (magic words) je technika pro mapování různých textových řetězců wiki na jediné ID, které je spojeno s funkcí. Tuto techniku používají jak proměnné, tak funkce analyzátoru. Veškerý text namapovaný na toto ID bude nahrazen návratovou hodnotou funkce. Mapování mezi textovými řetězci a ID je uloženo v proměnné  v souboru, který lze načíst pomocí.

Výchozí magická slova jsou implementována v.



Jak fungují kouzelná slůvka
Kdykoli MediaWiki najde text mezi dvojitými složenými závorkami, musí rozhodnout, zda XXX je proměnná, funkce analyzátoru nebo šablona. Za tímto účelem položí řadu otázek:


 * 1) Má přidružené ID kouzelného slova? Jako první krok při řešení označení tvaru  se MediaWiki pokouší přeložit XXX na ID kouzelného slova. Překladovou tabulku definuje $magicWords.
 * 2) *Pokud není k XXX přidruženo žádné ID magického slova, předpokládá se, že XXX je šablona.
 * 3) Je to proměnná? Pokud je nalezeno ID kouzelného slova, MediaWiki dále zkontroluje, zda má nějaké parametry.
 * 4) *Pokud nejsou nalezeny žádné parametry, MediaWiki zkontroluje, zda bylo ID kouzelného slova deklarováno jako ID proměnné. Pro kontrolu načte seznam magických slov sloužících voláním . Tato metoda získává svůj seznam ID proměnných z pevně zakódovaného seznamu ID proměnných (viz ) a ze seznamu ID uživatelských proměnných poskytovaných všemi funkcemi připojenými k háčku.
 * 5) **Pokud bylo ID magického slova klasifikováno jako proměnná, MediaWiki zavolá funkce spojené s názvem události, dokud se nenajde taková, která rozpozná magické slovo a dokáže vrátit jeho hodnotu.
 * 6) Je to funkce analyzátoru? Pokud existují nějaké parametry nebo pokud ID kouzelného slova chybí v seznamu ID proměnných kouzelných slov, pak MediaWiki předpokládá, že kouzelné slovo je funkce analyzátoru nebo šablona. Pokud je ID magického slova nalezeno v seznamu funkcí analyzátoru deklarovaných pomocí volání, je považováno za funkci analyzátoru a je vykresleno pomocí funkce s názvem  . V opačném případě se předpokládá, že se jedná o šablonu.
 * 1) Je to funkce analyzátoru? Pokud existují nějaké parametry nebo pokud ID kouzelného slova chybí v seznamu ID proměnných kouzelných slov, pak MediaWiki předpokládá, že kouzelné slovo je funkce analyzátoru nebo šablona. Pokud je ID magického slova nalezeno v seznamu funkcí analyzátoru deklarovaných pomocí volání, je považováno za funkci analyzátoru a je vykresleno pomocí funkce s názvem  . V opačném případě se předpokládá, že se jedná o šablonu.
 * 1) Je to funkce analyzátoru? Pokud existují nějaké parametry nebo pokud ID kouzelného slova chybí v seznamu ID proměnných kouzelných slov, pak MediaWiki předpokládá, že kouzelné slovo je funkce analyzátoru nebo šablona. Pokud je ID magického slova nalezeno v seznamu funkcí analyzátoru deklarovaných pomocí volání, je považováno za funkci analyzátoru a je vykresleno pomocí funkce s názvem  . V opačném případě se předpokládá, že se jedná o šablonu.

{{note|1= Podle konvence:


 * Kouzelná slova nazývaná proměnné jsou velkými písmeny, rozlišují se malá a velká písmena a neobsahují mezery.
 * Parserfunctions are prefixed with a hash sign ( {{# ), are case insensitive and do not include space characters.

Toto je však konvence, která se důsledně nepoužívá (z historických důvodů).


 * Proměnné nemají mezery, ale některé překlady proměnných v jiných jazycích mezery mají
 * Proměnné jsou obecně velká a rozlišují se velká a malá písmena, ale některé funkce analyzátoru také používají tuto konvenci.
 * Některé funkce analyzátoru začínají znakem hash, ale některé ne.

Where possible you should follow the conventions when defining or translating magic words. Magic words are higher in priority than templates, so any magic word defined, will block the usage of that defined name as a template. Following the conventions avoids adding more and more potential collisions. }}



Definování kouzelných slov
Aby kouzelná slova udělala své kouzlo, musíme definovat dvě věci:


 * mapování mezi textem wiki a ID kouzelného slova
 * mapování mezi ID magického slova a nějakou funkcí php, která interpretuje magické slovo.



Mapování textu wiki na ID kouzelných slov
Proměnná $magicWords se používá k přiřazení každého ID kouzelného slova k poli závislému na jazyce, které popisuje všechny textové řetězce mapované na ID kouzelného slova. Důležité: Tím se nastaví pouze mapování back-end i18n, stále musíte napsat jiný kód, aby MediaWiki použila magické slovo pro cokoli. Also, make sure that you initialize  as an empty array before adding language-specific values or you will get errors when trying to load the magic word and will need to rebuild your localization cache before it will work.

Prvním prvkem tohoto pole je celočíselný příznak udávající, zda magické slovo rozlišuje velká a malá písmena. Zbývající prvky jsou seznam textu, který by měl být spojen s ID magického slova. Pokud je příznak rozlišující malá a velká písmena 0, bude se shodovat jakákoli varianta názvů v poli. Je-li příznak rozlišující malá a velká písmena 1, budou s ID magického slova spojeny pouze přesné shody velkých a malých písmen. Formát je tedy

Toto přidružení vytváří $magicWords v souboru registrovaném pomocí.

V níže uvedeném příkladu španělská instalace MediaWiki spojí magické slovo ID 'MAG_CUSTOM' s "personalizado", "custom", "PERSONALIZADO", "CUSTOM" a všemi ostatními variantami případu. V anglické MediaWiki bude na 'MAG_CUSTOM' mapováno pouze "custom" v různých kombinacích případů:

Soubor :

V části souboru extension.json:

Všimněte si, že "ExampleMagic" se liší od klíče, který byste použili pro prostý internacionalizační soubor (obvykle pouze název přípony, tj. "Example"). "Magic" bylo přidáno záměrně, aby jedno nepřepisovalo druhé.



Inline PHP
Kouzelná slova můžete přidružit inline v PHP spíše než prostřednictvím souboru i18n. To je užitečné při definování háčků v, ale nemělo by se to dělat v rozšířeních.



Přiřazení ID kouzelného slova k funkci PHP
The mechanism for associating magic word IDs with rendering functions depends on whether the magic word will be used as a parser function or a variable. For more information, please see:



Lokalizace

 *  See Help:Magic words#Localisation for help. 

You can read more on definition and usage of magic words for localisation at Manual:Messages API, Manual:Language#Namespaces; Avoid  in messages.

Behavior switches (double underscore magic words)
Behavior switches are a special type of magic word. They can be recognized by their use of double underscores (rather than double braces). Example:

These magic words typically do not output any content, but instead change the behavior of a page and/or set a page property. These magic words are listed in and also at Help:Magic words#Behavior switches. The effect of most standard behavior switches is defined in. If no specific effect is defined, the magic word will simply set a page property in the page_props table. This can also be checked later by testing if  is null or the empty string

Custom behavior switch
Here is an example extension implementing a custom __CUSTOM__ behaviour switch

custom/extension.json - This is minimal, a real extension would fill out more fields. custom/custom.i18n.php

custom/MyHooks.php