Nápověda: Rozšíření:Translate/Příklad konfigurace skupiny
Pro překladatele (hlavní stránka nápovědy )
- Jak se překládá
- Osvědčené postupy
- Statistika a hlášení
- Záruka kvality
- Přehled o stavu překladu zpráv
- Offline překlad
- Slovníček
Pro správce překladů
- Jak připravit stránku k překladu
- Správa překladu stránky
- Překlad nestrukturovaných prvků
- Správa skupin
- Přesun překládané stránky
- Import překladů přes CSV
- Práce se svazky zpráv
Pro systémové administrátory a vývojáře
Tento návod je určen vývojářům a pokročilým administrátorům překladů. Rozebírá se zde, jak vytvořit nový konfigurační soubor pro překladatelské rozhraní a všechny podrobnosti a praktické aspekty s tím spojené. Má být používán společně s eskupinovou konfigurační referenční příručkou a vývojáři rozšíření Translate vám rádi pomohou s jakýmikoli otázkami, které budete mít po prostudování tohoto návodu.
Předpoklady
- Nainstalujte MediaWiki
- Nainstalujte rozšíření Translate a
- Nakonfigurujte jej.
Tento návod byl vytvořen na základě revize Translate r97948 (23. 9. 2011).
Tento návod popisuje proces povolení překladu pro některé části projektu MyBB. Podobným postupem můžete přidávat další projekty/soubory k překladu. Některé věci jsou pro translatewiki.net specifické a měli byste přirozeně použít to, co je ve vašem případě relevantní, namísto slepého následování kroků tohoto návodu.
Krok 1: Podívejte se na zdrojový kód
Pojďme se podívat na zdrojový kód MyBB s použitím $wgTranslateGroupRoot
jako pracovního adresáře, což je v tomto příkladu /home/betawiki/projects/
.
cd /home/betawiki/projects
svn co http://svn.mybboard.net/mybb/branches/1.6-stable mybb
sudo -u betawiki svn co http://svn.mybboard.net/mybb/branches/1.6-stable mybb
Nyní musíme najít soubory obsahující zprávy. Jsou v podadresáři mybb/inc/languages/
a zdrojové zprávy v angličtině najdete v podadresáři english/
.
Začněme tedy mybb/inc/languages/english/index.lang.php
, prvním lokalizačním souborem našeho projektu.
Krok 2: Podpora formátu souboru
V našem instalačním adresáři MediaWiki pod $2 a $2 src/FileFormatSupport/FileFormatFactory.php můžeme vidět třídy pro podporu formátů souborů, které se používají k mapování skupin zpráv na lokalizační soubory každého projektu. Abyste skutečně viděli, jaké formáty jsou podporovány, musíte se v tom trochu pohrabat. Takže jsme se prostě rozhodli nejprve zkusit použít třídu FlatPhpFFS a uvidíme, jak dobře funguje s naším souborem PHP.
Máme tedy soubor k mapování a zvolili jsme pro něj třídu FFS. Nyní musíme napsat konfiguraci skupiny. To je soubor YAML.
V indexu můžete najít odkaz na konfiguraci skupiny . Začněme s minimálním souborem uvedeným jako příklad pro sekci BASIC.
BASIC:
id: out-freecol
label: FreeCol (open source game)
description: "{{int:bw-desc-freecol}}"
namespace: NS_FREECOL
class: FileBasedMessageGroup
Můžeme pokračovat a jednoduše nahradit ukázkový text našimi vlastními hodnotami.
BASIC:
id: out-mybb
label: MyBB
description: "[[Translating:MyBB|MyBB]] is a web-based discussion forum software"
namespace: NS_MYBB
class: FileBasedMessageGroup
Popis přijímá veškerou syntaxi wikitextu. Jeden pěkný trik ukázaný v původním příkladu je ten, že jej můžete přeložit pomocí {{int:message-key}}. Pak ale musíte definovat výchozí text na stránce [[MediaWiki:Message-key]]. Všimněte si, že ID jmenného prostoru se přidává prostřednictvím jeho konstanty, viz jak používat vlastní jmenné prostory.
Potřebujeme ještě jednu věc: Sekci FILES
. Opět vycházíme z příkladu uvedeného v dokumentaci:
FILES:
format: FlatPhp
sourcePattern: %GROUPROOT%/inc/languages/messages_%CODE%.properties
targetPattern: commonist/messages_%CODE%.properties
Hmm, %CODE%
je kód jazyka, jako en
ve výchozím nastavení. Prozatím nechceme měnit adresářovou strukturu používanou MyBB. Místo toho můžeme použít funkci určenou pro tento účel: Mapu kódu, která nám umožňuje mapovat kódy jazyků každého jazyka na identifikátory používané naším projektem.
Takže končíme takto:
FILES:
format: FlatPhp
sourcePattern: %GROUPROOT%/mybb/inc/languages/%CODE%/index.lang.php
targetPattern: mybb/inc/languages/%CODE%/index.lang.php
codeMap:
en: english
"no": norwegian
no
, protože některé analyzátory YAML jej interpretují jako booleovský.V podstatě to říká, že pro kód en
bude %CODE%
výše english
, což je adresář pro soubory zpráv v angličtině.
Klíč targetPattern
je obvykle stejný jako sourcePattern
, ale bez předpony %GROUPROOT%
.
Dobře. Nyní uložme tento soubor někam, například do stejné složky, kde je uložen LocalSettings.php , s názvem MyBB.yaml
. Celý soubor je:
BASIC:
id: out-mybb
label: MyBB
description: "[[Translating:MyBB|MyBB]] is a web-based discussion forum software"
namespace: NS_MYBB
class: FileBasedMessageGroup
FILES:
format: FlatPhp
sourcePattern: %GROUPROOT%/mybb/inc/languages/%CODE%/index.lang.php
targetPattern: mybb/inc/languages/%CODE%/index.lang.php
codeMap:
en: english
"no": norwegian
Potom musíme říci naší příponě, aby si tento soubor přečetla. Přidejte následující řádek do LocalSettings.php
:
$wgTranslateGroupFiles[] = "MyBB.yaml";
Poté spusťte skript processMessageChanges.php
podle pokynů na Nápověda:Rozšíření:Translate/Vedení skupiny .
Pojďme se tedy přihlásit. Ujistěte se, že uživatel má správně nakonfigurováno právo "překládat-spravovat" a přejděte na [[Special:ManageMessageGroups]].
Můžete vidět toto:
No valid namespace defined, got NS_MYBB. Backtrace: <...>
V tomto případě byste při pozorném čtení dokumentace mohli zjistit, že je potřeba, aby se nový jmenný prostor registroval na MediaWiki, přidat následující řádek do LocalSettings.php
:
wfAddNamespace( 1246, 'MyBB' );
V tomto příkladu je použito 1246, ale můžete si vybrat libovolné volné číslo jmenného prostoru, které potřebujete. Pro rozšíření Translate vám doporučujeme používat sudá čísla jmenného prostoru 1200-1298.
Pokud nyní znovu načtete speciální stránku ManageMessageGroups, měli byste vidět řádek, který říká:
MyBB This message group has not been imported previously.
Klikněte na odkaz MyBB. Poté uvidíte seznam zpráv, které jsou v tomto souboru. Pokud jste s výsledky spokojeni, klikněte na "Provést" (execute).
Po kliknutí na "Provést" se soubor zpracuje a zobrazí se výstup podobný tomuto:
Imported new version of page MyBB:L\x5b'boardstats'\x5d/en. Imported new version of page MyBB:L\x5b'new posts'\x5d/en. Imported new version of page MyBB:L\x5b'no new posts'\x5d/en. ... Cache rebuild. All done!
Pokud je soubor velmi velký, musíte nejprve spustit php Translate/scripts/sync-group.php --group=out-mybb --lang=en
, protože webové rozhraní může importovat pouze omezený počet zpráv najednou kvůli časovému limitu PHP. Pokud narazíte na tento limit, můžete kliknout na tlačítko v dolní části stránky a importovat zbývající zprávy.
Krok 3: Přidání dalšího souboru
Nyní přidáme druhý soubor pro MyBB pro překlad. To lze provést dvěma způsoby:
Přístup 1: Přidání nového souboru YAML
Jednoduše přidejte nový soubor YAML a uložte jej pod novým názvem. Poté jej zavolejte zevnitř LocalSettings.php
a postupujte podle všech výše uvedených kroků. Soubor bude vypadat nějak takto:
BASIC:
id: out-mybb-showthread
label: MyBB
description: "[[Translating:MyBB|MyBB]] is a web-based discussion forum software"
namespace: NS_MYBB
class: FileBasedMessageGroup
FILES:
format: FlatPhp
sourcePattern: %GROUPROOT%/mybb/inc/languages/%CODE%/showthread.lang.php
targetPattern: mybb/inc/languages/%CODE%/showthread.lang.php
codeMap:
en: english
"no": norwegian
Jak je zřejmé z výše uvedeného příkladu, musíte pro tuto novou skupinu použít jiné ID.
I když je tento přístup snadný, nečlení se na stovky různých překladových jednotek (tj. souborů mapovaných do jejich skupiny zpráv). V určitém okamžiku potřebujete aktualizovat nějakou hodnotu a dělat to pro všechny ty soubory není žádná legrace. Naštěstí existuje jiný způsob, který je uveden níže.
Přístup 2: Syntaxe TEMPLATE
Myšlenka je taková, že do šablony vtáhneme společné hodnoty. Poté každá skupina převezme chybějící hodnoty ze šablony a není třeba je opakovat pro každou skupinu.
Vraťme se k příkladu MyBB. Řekněme, že chcete do přeložitelných zpráv zahrnout index.lang.php
, showthread.lang.php
, global.lang.php
. Soubor YAML je třeba aktualizovat takto:
TEMPLATE:
BASIC:
description: "[[Translating:MyBB|MyBB]] is a web-based discussion forum software"
namespace: NS_MYBB
class: FileBasedMessageGroup
FILES:
format: FlatPhp
codeMap:
en: english
"no": norwegian
---
BASIC:
id: out-mybb-index
label: MyBB - index page
FILES:
sourcePattern: %GROUPROOT%/mybb/inc/languages/%CODE%/index.lang.php
targetPattern: mybb/inc/languages/%CODE%/index.lang.php
---
BASIC:
id: out-mybb-showthread
label: MyBB - show thread
FILES:
sourcePattern: %GROUPROOT%/mybb/inc/languages/%CODE%/showthread.lang.php
targetPattern: mybb/inc/languages/%CODE%/showthread.lang.php
---
BASIC:
id: out-mybb-global
label: MyBB - global messages
FILES:
sourcePattern: %GROUPROOT%/mybb/inc/languages/%CODE%/global.lang.php
targetPattern: mybb/inc/languages/%CODE%/global.lang.php
---
bez počátečních a koncových mezer! Jinak nebude soubor YAML správně analyzován.Jak je zřejmé z výše uvedeného příkladu, codeMap
je definován pouze jednou. Přidávání a odebírání souborů je stejně snadné jako přidání nebo odebrání části ve výše uvedeném souboru.
Pokud nyní přejdete na speciální stránku ManageMessageGroups, uvidíte tři položky, jako jsou tyto:
MyBB global messages: This message group has not been imported previously. MyBB index page: This message group has not been imported previously. MyBB show thread: This message group has not been imported previously.
Pokud je do vašeho projektu zahrnuto mnoho souborů, může být dobré napsat skript, který vám váš soubor YAML vygeneruje. Příklad najdete na svn:trunk/translatewiki/StatusNet/genStatusNet-plugins.php.
Krok 4: Zdrojová skupina
Přidání zdrojové skupiny a definování souborů zpráv jako jejích podskupin má dvě výhody:
- Méně práce pro překladatele při výběru různých skupin zpráv, zejména při údržbě. Překladatelé mohou jednoduše otevřít agregovanou skupinu a přeložit nebo aktualizovat vše, co potřebuje aktualizaci nebo překlad pro všechny skupiny.
- Statistiky lze vykazovat na agregované úrovni skupiny, tzn. celý projekt.
Abyste mohli definovat agregovanou skupinu, musíte přidat následující sekci hned za sekci TEMPLATE a před definici jednotlivých podskupin:
---
BASIC:
id: out-mybb-0-all # The id should sort before all the subgroups it has
label: MyBB
meta: yes
class: AggregateMessageGroup # Not taken from template
GROUPS:
- out-mybb-* # We could specify them one by one, but wildcard is easier
Tím se dostáváme docela blízko, ale stále chybí jeden krok. V tomto okamžiku, pokud přejdete na Special:Translate, uvidíte nadřazenou skupinu MyBB (a ta ve skutečnosti funguje!), ale také podskupiny uvedené jako samostatné skupiny. :(
Je způsob, jak to opravit. Přidejte následující řádek do LocalSettings.php
:
$wgTranslateGroupStructure['/^out-mybb/'] = array( 'mybb' );
Tím vezme všechny skupiny, jejichž ID odpovídá danému vzoru, zobrazí první skupinu a skryje vše ostatní pod touto první skupinou. Trochu ošklivé, ale funguje to. Tato konstrukce podporuje pouze dvě vrstvy, i když skupiny agregátů mohou být součástí jiných skupin agregátů.
Pokud nyní přejdete na [[Special:Translate]], uvidíte v seznamu pouze nadřazenou skupinu MyBB. Navíc uvidíte odkaz "Zobrazit 3 podskupiny". Kliknutím na něj zobrazíte názvy podskupin.
Podívejte se na příručku pro TAGS a další sekce, kterými jsme v tomto dokumentu neprošli.
Krok 5: Čištění
Soubory YAML projektů podporovaných translatewiki.net jsou uloženy v repozitáři translatewiki na Git .
V translatewiki.net jsou řádky LocalSettings.php
ve skutečnosti v TranslateSettings.php
.
Sandboxwiki na translatewiki.net nemá soubor TranslateSettings.php
, proto jsme vše přidali do LocalSettings.php
.