Thewoodcraft.org:id9301

Z thewoodcraft.org
Verze z 23. 7. 2024, 13:33, kterou vytvořil Keny (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)

Š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.
print
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
Můžeme toho využít, pokud chceme použít výstup jako parametr šablony, která zobrazí zprávu s informací a prosbou o překlad, která bude viditelná jen dokud NEBUDE existovat překlad v jazyce identifikovaném příslušným kódem
PříkladAplikace šablony v kódu vypadá např. takto.
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}}}
}}
Výsledek její interpretace je následující: Do jazyka 中文 se stránka test-dontmarkup překládá na stránce test-translate.

Čí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.

Parametrizovaná šablona {{test-mt}} není jednoduchá. Uvědomte si, že jsem ji vytvořil jen proto, abych naplno demonstroval možnosti využití šablony {{Mt}}. Většina šablon tak složitá není a také se do nich po dokončení už obvykle znovu nehrabe.
(Poznamenal Keny)
{{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 tisotarget 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)
PoznámkaTen 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
Pokud potřebujeme vrátit místo názvu jazyka v tomto případě pouze jeho kód, je potřeba použít 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)
Upozornění Š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
Parametr 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ũ
Upozornění 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}}
Upozornění 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}}
Pro použití v tabulkách, k setřídění podle jazyka se hodí..
{{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

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> A typical view of Fréttinga</translate>

<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>


1>Fréttinga</> page and used for demonstrate as Translate do <tvar