Internacionalizace

PmWiki podporuje internacionalizaci webových stránek, umožňuje aby se v názvech stránek nacházeli znaky s diakritikou a téměř zcela lokálně přizpůsobilo systémové hlášení PmWiki. Většina těchto přizpůsobení se v PmWiki vyřeší funkcí XLPage(), která načítá sadu překladových proměnných z wiki stránky (typicky pomenované XLPage, ale může se jmenovat i jinak).

Načítání stránek s překladem

Stránky pro mnohé jazyky jako francouzština, němčina, holadnština a španělština už jsou vytvořené a udržované na webové stránce pmichaud.com. Archiv těchto překladů si můžete stáhnout z http://pmichaud.com/pub/pmwiki/i18n/ (a vyberte si český balíček, má ve jméně cs). Jednoduše rozbalte archiv do adresáře obsahujícího vaši instalaci pmwiki.php. Archiv obsahuje množství souborů stránek, které jsou umístěny ve vašem adresářiwikilib.d/, a některé speciální skripty pro překlady,, které používají jinou znakovou sadu než iso-8859-1 (výchozí kódování PmWiki).

Když jsou stránky s překlady nainstalované (tj. nakopírované), jazyk zapnete přidání volání XLPage() do svého souboru config.php. Například, pro volbu francouzských hlášení bychom uvedli

XLPage('fr','PmWikiFr.XLPage');

což udává, že je třeba načítat překlady pro francouzštinu ('fr') ze stránky PmWikiFr.XLPage. Pro český překlad použijete:

XLPage('cs','PmWikiCs.XLPage');
 Je zcela v pořádku načítat několik stránek; takže pokud chcete vytvořit vlastní lokální překlady beze změn těch získaných z i18n.tgz, vytvořte pouze další stránku (viz níže) a načítejte ji nejprve. Ujistěte se, že nejprve načítáte stránku s vašimi ístními změnami!!:
XLPage('fr','PmWikiFr.XLPageLocal');  # moje osobní překlady
XLPage('fr','PmWikiFr.XLPage');       # z i18n.tgz

Pokud máte v úmyslu provozovat svoje webové stránky ve více jazycích a používat (Wiki skupiny?) jako selektory jazyků, budete chtít pravděpodobně umístit tento kód do souborů s lokálními úpravami (viz Nastavení pro skupiny?). Například, pokud je vaše stránka dostupná francouzsky a anglicky a francouzské stránky jsou ve skupině pojmenované Fr, vytvořili byste soubor pojmenovaný Fr.php v adresáři local/ který by obsahoval:

<?php if (!defined('PmWiki')) exit();
##zmena do francuzskeho jazyka
XLPage('fr','PmWikiFr.XLPage');

Můžete chtít vytvořit stránku nazvanou PmwikiFr.php se stejným obsahem pro přístup k francouzské dokumentaci ve skupině PmwikiFr. En.php v tomto případe není potřeba, neboť angličtina je výchozí předvolený jazyk.

Alternativa k výše uvedenému by bylo přidat do config.php následující kód, který testuje zda ve skupině existuje XLPage, a pokud ji najde, načítá ji:

    
$xlpage = FmtPageName('$Group.XLPage', $pagename);
if (PageExists($xlpage)) XLPage($xlpage, $xlpage);

S touto metodou dokážete přiřadit příslušnou XLPage do jakékoli skupiny, která potřebuje jinou jazykovou podporu.

Tvorba nových překladů

Pokud pro vámi požadovaný jazyk neexistují stránky jazyka, ke lehké je vytvořit! Překldaový soubor XLPage obsahuje řádky ve tvaru

'výraz' => 'přeložený výraz',

kde "výraz" je internacionalizovaný výraz (označený pomocí $[výraz]) v $...Fmt proměnných PmWiki, a "přeložený výraz" je to, co by se mělo zobrazit ve vašem konkrétním jazyce. Například, řádek (v PmWikiFr.XLPage)

'SearchWiki' => 'Rechercher',

převede na výstupu "$[SearchWiki]" na "Rechercher". Soubor Localization:XLPageTemplate je dobrý výchozí bod pro tvorbu nové stránky XLPage a již v sobě obsahuje většinu klíčových výrazů PmWiki. Všimněte si, že překladový mechanismus převádí jen výrazy, které jsou uvedené jako přeložitelné v řetězcích $...Fmt --nepřeloží normální text ve formátovaní wiki.

Pokud vytvoříte nové verze stránek PmWiki v jiných jazycích, prosím uvažujte o jejich přidání na hlavní stránku PmWiki tak aby byli přístupné ostatním v archívu i18n.tgz!

Pojem "i18n" se běžně používá jako zkratka anglického slova "internationalization" (internacionalizace). Zkratka je odvozená od skutečnosti, že mezi "i" a koncovým "n" je 18 písmen a jen málo lidí je chce všechny psát...

Nástroje pro lokalizaci PmWiki

Můžete pomoci lokalizovat PmWiki do svého jazyka na původní stránce:

<< Vlastní WikiStyly | Index dokumentace | Lokální nastavení >>

OT: Když mám wiki internacionalizovanou pomocí config.php, jak vrátím některou konkrétní skupinu do angličitny?

OD: Použijte $XLLangs = array('en'); v konfiguračním souboru group.php.

OT: Co představuje první parameter této funkce? Jak může být použitý?

OD:

Mechanizmus XLPage umožňuje načítat více sad překladů a první parametr se používá na jejich rozlišení.

Například, předpokládajme, že chceme mít překlady pro normální francouzštinu i pro "kanadskou" francouzštinu. Namísto udržování dvou zcela samostatných sad stránek, bychom mohli udělat:

    XLPage('fr', 'PmWikiFr.XLPage');
    XLPage('fr-ca', 'PmWikiFrCa.XLPage?');

PmWikiFr.XLPage by obsahovala všechny překlady ve standartní francouzštině, zatímco co PmWikiFrCA.XLPage? by mohla obsahovat jen překlady "specifické pro Kanadu" -- tj., ty, které jsou odlišné od těch na francouzské stránce.

První parameter odlišuje dvě sady překladů. Navíc, skript config.php může použít proměnnou $XLLangs na úpravu pořadí překladu, takže pokud byla skupina nebo stránka kde jsem chtě překlad pouze ve standartní francouzštině, mohu nastavit:

    $XLLangs = array('fr', 'en');

a Pmwiki použije pouze 'fr' a 'en' překlady (v tomto pořadí), nezáleží na tom kolik překladů bylo načteno pomocí XLPage().