Thewoodcraft.org:id9301
Šablona {{Mt}}
je určena pouze pro použití v rámci vícejazyčné wiki.
Šablona akceptuje pouze jeden poziční parametr, kterým je jazykový kód. Pokud chybí vrací šablona ostatní předané parametry jako řetězec. Tohoto chování šablony lze využít, chceme-li předat tyhle parametry ke zpracování jiné šabloně, nebo zkontrolovat, jaké parametry se předávají šabloně.
{{Mu|print=dot|o=test-translate|t=test-dontmarkup|}}
- print=dot|1=|o=test-translate|t=test-dontmarkup|s=
- o
- Hodnotou je název stránky. Nebude-li to existující stránka, nezobrazí šablona většinou nic. Je to pro většinu situací výchozí stránka, a název atributu vychází z anglického slova origin neboli česky původ.
- Je klíčový parametr. Nemusí být vždy nutně uveden, ale na tom, jakou hodnotu jeho prostřednictvím předáme šabloně, záleží co se zobrazí a jak.
- s
- Výchozím oddělovačem, neboli separátorem, který se přidává na začátek řetězce je znak
•
doplněný dvěma mezerami. Ovšem za určitých okolností se hodí, když ho můžeme vyměnit za řetězec, který předáme prostřednictvím tohoto parametru. - t
- Šablona
{{Mt}}
umožňuje generovat také odkazy na jazykové verze stránek, transkluzivně vložené do cílové stránky. A její název se šabloně předává prostřednictvím tohoto atributu. Jehož název byl odvozen z angl. slova target (česky cíl).
Testujeme cílovou stránku
Cílem je nepřekládaná stránka
Zdrojem je překládaná stránka test-translate, překlad existuje a cílem je nepřekládaná stránka test-dontmarkup. Měl by se zobrazit řetězec translatable
{{Mu|print=|o=test-translate|t=test-dontmarkup|en}}
- translatable
Výsledek její interpretace je následující: {{test-mt
|{{Mu
|print=
|o=test-translate
|t=test-dontmarkup
|zh
}}|zh|test-translate|test-dontmarkup}}
}}
Šablona {{test-mt}}
má následující obsah:
{{#switch:{{{1}}}
|translatable=Do jazyka [[{{{3}}}/{{{2}}}{{!}}{{#language:{{{2}}}}}]] se stránka [[{{{4}}}]] překládá na stránce [[{{{3}}}]].
|origin=Stránka [[{{{4}}}]] nemá překlad do jazyka '{{{2}}}'. Chcete-li aby nabízela multijazyčný obsah, máte několik možností:
# Můžete obsah stránky [[{{{4}}}]], překládat přes systémové zprávy.
# Můžete v jejím wikikódu použít interní funkci XXX, která zajistí automatické natažení přeloženého obsahu ze stránky [[{{{3}}}]], na základě zvoleného jazyka rozhraní, bude-li takový překlad existovat.
# Nebo můžete vytvořit podstránku [[{{{4}}}/{{{2}}}]] a do záhlaví vložte následující kód, který bude dělat redirekt na jazykovou podstránku (pojmenovanou <code>{{{2}}}</code>), pokud ovšem bude pro stránku [[Special:MyLanguage/{{{3}}}]] překlad do jazyka '{{{2}}}' existovat.
: <code><nowiki>#REDIRECT [[</nowiki>{{{3}}}/{{{2}}}<nowiki>]]</nowiki></code>
|#default={{{1}}}
}}
Čínský překlad stránky test-translate ani test-dontmarkup tady rozhodně nevznikne. Proto je zpráva viditelná. Ale nyní si zkusme, jaký bude výsledek, použijeme-li kód 'en': Do jazyka English se stránka test-dontmarkup překládá na stránce test-translate.
- Zdrojem je překládaná stránka test-translate, překlad existuje a cílem je nepřekládaná stránka test-dontmarkup. Měl by se zobrazit červeně vybarvený link test-dontmarkup/en a za ním aktivní link výchozí stránku test-translate/en pojmenovaný English, a na začátku by měl být doplněný separátor
{{Mu|print=dot|o=test-translate|t=test-dontmarkup|en}}
- • test-dontmarkup/en (English)
Cílem je překládaná stránka
Pokud je zdrojem překládaná stránka test-translate, překlad existuje a cílem jiná překládaná stránka např. titulky 1L1, zobrazí název jazyka, odkazující na stránku titulky 1L1/en
{{Mu|print=|o=test-translate|t=titulky 1L1|en}}
- English
- S parametrem 'print=dot' včetně separátoru...
{{Mu|print=dot|o=test-translate|t=titulky 1L1|en}}
- • English
- A s parametrem 'print=dotcode' včetně kódu jazyka...
{{Mu|print=dot|o=test-translate|t=titulky 1L1|en}}
- • English (en)
Stejný zdroj i cíl
Občas se může stát, že se šabloně předá jako cíl i překládaná zdrojová stránka.
Pro šablonu to není problém, ale v reál by došlo k zacyklení, proto se u překládané stránky u níž překlad v příslušném jazyce existuje v takovém případě se zobrazí řetězec tiso
– target is origin, který lze v jiné šabloně odchytit a ošetřit.
{{Mu|print=|o=test-translate|t=test-translate|en}}
- tiso
{{Mu|print=dot|o=test-translate|t=test-translate|en}}
- tiso
{{Mu|print=dotcode|o=test-translate|t=test-translate|en}}
- tiso
U nepřeloženého zdroje se nezkoumá shoda s cílem, protože je třeba dořešit nejprve překlad výchozí stránky, proto se vrací, není-li parametrem print
řečeno jinak, řetězec origin.
{{Mu|print=|o=test-dontmarkup|t=test-dontmarkup|en}}
- origin
Parametr print=dot
generuje položku do seznamu jazyků, doplněnou výchozím separátorem. Proto generuje jiný výsledek. Aktivní odkaz na Special:MyLanguage/test-dontmarkup, pojmenovaný 'default'
{{Mu|print=dot|o=test-dontmarkup|t=test-dontmarkup|en}}
- • English (default)
Podobná situace se bude opakovat v situaci, kdy výchozí stránka (origin) nebude existovat.
{{Mu|print=|o=test-dontmarkup|t=test-dontmarkup|en}}
Rozdíl bude pouze v tom že aktivní odkaz na Special:MyLanguage/dontmarkup, pojmenovaný 'default' bude červený, protože cílová stránka neexistuje.
- origin
{{Mu|print=dot|o=dontmarkup|t=dontmarkup|en}}
- • English (default)
Neexistující cíl
- Zdrojem je překládaná stránka test-translate. Cílem je neexistující cíl dontmarkup, ale překlad výchozí stránky existuje. Zobrazí se červeně zbarvený link na neexistující stránku dontmarkup a za ním aktivní link pojmenovaný 'origin', odkazující na stránku s překladem test-translate/en
{{Mu|print=|o=test-translate|t=dontmarkup|en}}
- dontmarkup (English)
- Pokud překlad výchozí stránky neexistuje, zobrazí se řetězec
origin
{{Mu|print=|o=test-translate|t=dontmarkup|ki}}
- dontmarkup (origin)
Parametr print=dot
- Pokud je zdrojem překládaná stránka test-translate a překlad výchozí stránky existuje, zajistí atribut
print=dot
to, že se zobrazí červeně zbarvený link na neexistující stránku dontmarkup za kterým bude aktivní link pojmenovaný 'origin', odkazující na stránku s překladem test-translate/en a před tím bude výchozí separátor•
{{Mu|print=dot|o=test-translate|t=dontmarkup|en}}
- • dontmarkup (English)
- Výchozí separátor lze nahradit přes atribut
s=
. Chcete-li použít znak svislítko|
(který se u šablon využívá jako oddělovač atributů), je třeba využít pomocnou šablonu{{!}}
(vykřičník) –{{!}}
{{Mu|print=dot|s={{!}}|o=test-translate|t=dontmarkup|en}}
- |dontmarkup (English)
- Neexistující překlad výchozí stránky v kombinaci s atributem
print=dot
se bude lišit od výše uvedeného příkladu č. XX tím, že se místo řetězce 'origin' zobrazí název jazyka, a za ním odkaz stránku Special:MyLangugage/dontmarkup, pojmenovaný 'default'. {{Mu|print=dot|o=test-translate|t=dontmarkup|ki}}
- • dontmarkup (origin)
- Ten je zbarven červeně, protože stránka dontmarkup neexistuje. Ovšem i kdyby existovala a byl zobrazen modře, je interpretace šablony stejná, protože překlad stránky test-translate není možné vložit do neexistující stránky, i kdyby existoval. Pro dobré porozumění, srovnej rozdíly v interpretaci kódu při použití atributu
print=
.
Vliv hodnoty atributu print
Pokud chceme (na základě předaného jazykového kódu) získat nějaké informace, nebo výstup, se kterým můžeme dále pracovat je potřeba použít parametr print=
s hodnotou: plain
, plaincode
, dot
, nebo lang
.
Nemá-li print=
žádnou uvedenou hodnotu, vrací aktivní odkaz na jazykovou podstránku pojmenovanou názvem jazyka. V tomto ukázkovém příkladu odkazující na stránku test-translate/en
{{Mu|print=|o=test-translate|en}}
- English
- Pokud žádny překlad do jazyka 'xyz' tahle stránka nemá, nevrací se nic.
{{Mu|print=|o=test-translate|xyz}}
dot
Jak se chová volba print=dot
, je-li uvedena výchozí i cílová stránka již demonstruje výše uvedený kód. Následující příklady demonstrují, jak se chová pokud je uvedena pouze výchozí stránka.
v jako řetězec, před který se vloží defaultní separátor který lze parametrem s=
"přerazit".
{{Mu|print=dot|en}}
- • English
- Je-li výchozí stránka přeložená do uvedeného jazyka, vygeneruje se aktivní link, před který se vloží separátor. Ten lze atributem
s=
"přerazit" {{Mu|print=dot|o=test-translate|en}}
- • English
- V případě, že se výchozí stránka překládá, ale překlad do požadovaného jazyka ještě neexistuje, vrací se jazyk wiki.
{{Mu|print=dot|o=test-translate|fi}}
- • suomi
print=lang
dotcode
Volba print=dotcodedot
vrací, podobně jako dot
, název jazyka, jako řetězec, před který vloží defaulní separátor co se dá parametrem s=
"přerazit". Ale navíc rozšířený o kód jazyka, což usnadní orientaci pokud není z názvu jazyka jasné, jaký používá jazykový kód pro podstránky.
{{Mu|print=dotcode|en}}
- • English (en)
Pokud najde také jazykovou podstránku výchozí stránky (o) odpovídající předanému jazykovému kódu, vygeneruje aktivní odkaz, tvořený názvem jazyka a přidaným řetězcem s kódem příslušného jazyka.
{{Mu|print=dotcode|o=test-translate|en}}
- • English (en)
Pokud jazykovou podstránku výchozí stránky (o) odpovídající předanému jazykovému kódu nenajde vrátí pouze neaktivní řetězec.
{{Mu|print=dotcode|o=dontmarkup|en}}
- • English (en)
Ovšem pokud jazykový kód nebude mít v systému MediaWiki podporu, rovnou ho zahodí.
{{Mu|print=dotcode|o=test-translate|xyz}}
{{Mu|print=dotcode|o=dontmarkup|xyz}}
Ovšem zcela jiné chování bude mít v případě, bude-li uveden i parametr t. Pokud nenajde odpovídající jazykovou verzi u výchozí stránky předané atributem o, vždy zobrazí název jazyka, doplněný jazykovým kódem a za ním link pojmenovaný 'default', jehož cílem bude vždy odkaz na cílovou stránku, volanou přes speciální stránku Special:MyLanguage.
{{Mu|print=dotcode|o=dontmarkup|t=test-dontmarkup|kk}}
- • қазақша (kk) (default)
A to i v případě, že se výchozí stránka překládá.
{{Mu|print=dotcode|o=test-translate|t=test-dontmarkup|kk}}
- • test-dontmarkup/kk (қазақша - kk)
Šablona se v tomto bodě chová jinak, než je popsáno! |
Rozdíl zaznamenáte jen pokud bude překlad stránky test-translate v příslušném jazyce existovat – pak na něj bude 'default' odkazovat:
{{Mu|print=dotcode|o=test-translate|o=test-dontmarkup|en}}
- • English (en) (default)
Nebo když bude cílem neexistující stránka dontmarkup, protože pak bude odkaz zbarven červeně.
{{Mu|print=dotcode|o=test-dontmarkup|t=dontmarkup|en}}
- • English (en) (default)
plain
Volba print=plain
je určena k rychlé transformaci jazykového kódu na textová řetězec. A jelikož nepracuje s testováním výchozí stránky, je nejrychlejší operací.
Vrací název jazyka (pokud existuje), bez výchozího separátoru.
{{Mu|print=plain|en}}
- English
Neexistuje-li překlad příslušného jazyka, vrátí stejný řetězec, takže lze velice jednoduchým působem využít šablonu k testování validity předaného kódu jazyka. Viz ukázková interpterace následujícího kódu:
{{#ifeq:{{{|xyz}}}|{{Mu|print=plain|xyz}}|Neexistující jazykový kód {{{|xyz}}}|}}
Zde je výsledek interpretace: Neexistující jazykový kód xyz Pro ověření validity jazykového kódu v šabloně lze použít jednodušší kód. Místo řetězce 'en' stačí uvést příslušný parametr:
{{#ifeq:en|{{Mu|print=plain|en}}||en}}
Pro 'en' vrátí en a pro 'xyz' – nic. Přímo ve stránce lze samozřejmě použít šablonu rovnou:
{{Mu|print=plain|xyz}}
- xyz
Je-li použita výchozí stránka, bude interpretace jiná. Existuje-li překlad výchozí stránky, bude výsledek podobný, jako kdybychom uvedli dot
, ale nebude generován aktivní link. Výchozí separátor lze pochopitelně změnit.
{{Mu|print=plain|o=test-translate|en}}
- • English
U nepřekládané stránky se nevrátí nic
{{Mu|print=plain|o=test-dontmarkup|en}}
A pro neexistující stránku bude výsledek stejný jako kdybychom žádnou výchozí stránku neuvedli – zobrazí se pouze název jazyka coby řetězec.
{{Mu|print=plain|o=dontmarkup|en}}
- English
print=plain
se tedy hodí, když chceme vygenerovat seznam jazyků, do kterých už je stránka přetlumočena, aniž by to byly aktivní odkazy.plaincode
Volba print=plaincode
se hodí, pokud chceme generovat wiki tabulky s parametrem sortable
, protože vždy vrací řetězec tvořený názvem jazyka a jeho jazykovým kódem, doplněný o oddělovač buněk (dvě svislítka za sebou), bez ohledu na to, jestli překlad či stránka existuje.
{{Mu|print=plaincode|en}}
- English||en
{{Mu|print=plaincode|o=test-translate|en}}
- English||en
{{Mu|print=plaincode|o=test-dontmarkup|en}}
- English||en
{{Mu|print=plaincode|o=dontmarkup|en}}
- English||en
- Díky tomu nemusíte nic dalšího řešit. Protože umožňuje generovat správnou tabulku, ať je stránka přeložená, nebo ne. Viz příklad:
Lang code page English en test-translate/en English en test-dontmarkup/en English en dontmarkup/en čeština cs test-translate/cs čeština cs test-dontmarkup/cs čeština cs dontmarkup/cs suomi fi test-translate/fi suomi fi test-dontmarkup/fi suomi fi dontmarkup/fi
code
Volba print=code
je ideální k vygenerování jazykové lišty s aktivními odkazy na překlady, pojmenované jménem jazyka, protože vrací aktivní link, jedině když překlad do příslušného jazyka existuje.
{{Mu|print=code|en}}
{{Mu|print=code|o=test-translate|en}}
- English (en)
{{Mu|print=code|o=test-dontmarkup|en}}
{{Mu|print=code|o=dontmarkup|en}}
- Ideální je v kombinaci s nastaveným separátorem. Viz příklad.
Pro [[Special:MyLanguage/test-translate|test-translate]] je zde {{Mu|print=code|o=test-translate|cs}} {{Mu|print=code|s=,|o=test-translate|en}} {{Mu|print=code|s=,|o=test-translate|sk}} {{Mu|print=code|s=,|o=test-translate|pl}} {{Mu|print=code|s=,|o=test-translate|hu}}
- Pro test-translate je zde čeština (cs),English (en),slovenčina (sk),polski (pl),magyar (hu)
- V reálném kódu jdou položky rovnou za sebou, aby se nevkládaly konce řádků, interpretované jako mezery.
lang
Volba print=lang
vrací kód jazyka, ale jen pokud jazyková podstránka výchozí stránky odpovídající předanému jazykovému kódu existuje.
{{Mu|print=lang|o=test-translate|en}}
- en
Pokud nenajde jazykovou podstránku výchozí stránky (o) odpovídající předanému jazykovému kódu, vrátí řetězec untranslated
{{Mu|print=lang|o=test-translate|xyz}}
- untranslated
A pokud výchozí stránka (o) neexistuje vůbec, nevrátí nic.
{{Mu|print=lang|o=dontmarkup|en}}
{{Mu|print=lang|o=dontmarkup|xyz}}
Stejný efekt bude mít když se parametr o s výchozí stránkou šabloně {{Mt}}
nepředá vůbec.
{{Mu|print=lang|en}}
Nebo když se jí předá pouze jazykový kód.
{{Mu|en}}
Bez cíle
- Zdrojem je překládaná stránka test-translate, překlad existuje a cíl není uveden. Měl by se zobrazit jazyk existujícího překladu.
{{Mu|print=|o=test-translate|en}}
- English
S parametrem 'print=dot' jazyk překladu doplněný o separátor
{{Mu|print=dot|o=test-translate|en}}
- • English
A parametrem 'print=dotcode' rozšířený o kód jazyka
{{Mu|print=dotcode|o=test-translate|en}}
- • English (en)
Případně jenom kód jazyka a separátor, bude-li uvedeno..
{{Mu|print=code|o=test-translate|en}}
- English (en)
- Je-li zdrojem překládaná stránka test-translate, ale překlad neexistuje a cíl není uveden. Měl by se zobrazit řetězec untranslated
{{Mu|print=|o=test-translate|ki}}
- Gĩkũyũ
Zde má šablona jiné chování než je popsáno. Protože by neměla vracet nic! Situace byla zmíněna již výše. Rozdíl je dán zřejmě tím, že jazyk s kódem 'ki' existuje, kdežto s 'xyz' ne! |
- Stejný efekt by měla mít i nepřekládaná ale existující stránka test-dontmarkup bez uvedeného cíle.
{{Mu|print=|o=test-dontmarkup|ki}}
Zde má šablona jiné chování než je popsáno (momentálně nevrací nic). Protože by měla vracet odkaz, volaný přes šablonu Special:MyLanguage/test-dontmarkup. |
- Neexistující stránka, by měla vracet červeně zbarvený odkaz dontmarkup.
{{Mu|print=|o=dontmarkup|en}}
{{Mu|s={{!}}|print=|o=test-translate|en}}
{{Mu|s={{!}}|print=|o=test-dontmarkup|ki}}
- English
Všimněte si, že bez parametru 'print=dot', nemá použití separátoru žádný efekt
{{Mu|s={{!}}|print=dot|o=test-translate|en}}
{{Mu|s={{!}}|print=dot|o=test-dontmarkup|ki}}
- |English
- |čeština
Odkaz může být doplněn o kód jazyka použijeme-li 'print=dotcode'
{{Mu|s={{!}}|print=dotcode|o=test-translate|en}}
{{Mu|s={{!}}|print=dotcode|o=test-dontmarkup|ki}}
- |English (en)
- |Gĩkũyũ (ki)
Chceme-li potlačit vygenerování aktivního odkazu, lze použít 'print=plain'
{{Mu|s={{!}}|print=plain|o=test-translate|en}}
{{Mu|s={{!}}|print=plain|o=test-dontmarkup|ki}}
- |English
- |
A použijeme-li 'print=plaincode', můžeme vytvořit druhý sloupec tabulky, který bude možné setřídit podle kódu jazyka
{{Mu|s={{!}}|print=plaincode|o=test-translate|en}}
{{Mu|s={{!}}|print=plaincode|o=test-dontmarkup|ki}}
- |English||en
- |Gĩkũyũ||ki
[[test-dontmarkup]] [[test-translate]] == test-dontmarkup transclusion == {{:test-dontmarkup}} == test-translate transclusion == {{:test-translate}}
test-dontmarkup transclusion
cs
FALSE
{{#ifexist:{{PAGENAME}}/{{PAGELANGUAGE}}|TRUE|FALSE}}
FALSE
{{#ifeq:<languages/>|<languages/>|TRUE|FALSE}}
FALSE
{{#ifeq:<languages />|<languages/>|TRUE|FALSE}}
FALSE
{{#ifeq:<languages exists/>|<languages/>|TRUE|FALSE}}
<translate>Testovací stránka. Neoznačovat k překladu!</translate>
test-translate transclusion
cs
FALSE
{{#ifexist:{{PAGENAME}}/{{PAGELANGUAGE}}|TRUE|FALSE}}
FALSE
{{#ifeq:<languages/>|<languages/>|TRUE|FALSE}}
FALSE
{{#ifeq:<languages />|<languages/>|TRUE|FALSE}}
FALSE
{{#ifeq:<languages exists/>|<languages/>|TRUE|FALSE}}
<languages />
<translate> Fréttinga is a small municipality in MungoLand, located on the BaMungo island.</translate> <translate> It hosts a population of about 400 people. It has some agriculture and fishing and tourists like to visit it in the summertime.</translate> <translate> It has marvelous beaches with a lot of [[<tvar|1>Special:MyLanguage/Seagull</>|seagulls]].</translate>
<translate>
Services
</translate>
<translate> It doesn't have many services.</translate> <translate> There is a shop, and a car ferry visits the island from the mainland once a day.</translate>
<translate> Main events:</translate>
- <translate> The roof of the church fell down in 2009</translate>
- <translate> New church was built in 1877</translate>