Help:Extension:Translate/Group configuration example/cs

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í vám rádi pomohou s jakýmikoli otázkami, které budete mít po prostudování tohoto návodu.

Předpoklady

 * rozšíření Translate a
 * jej.
 * jej.

Tento návod byl vytvořen na základě revize 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  jako pracovního adresáře, což je v tomto příkladu.

Nyní musíme najít soubory obsahující zprávy. Jsou v podadresáři  a zdrojové zprávy v angličtině najdete v podadresáři.

Začněme tedy, 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  a    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 můžete najít odkaz na. Začněme s minimálním souborem uvedeným jako příklad pro sekci BASIC.

Můžeme pokračovat a jednoduše nahradit ukázkový text našimi vlastními hodnotami.

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í. 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. Opět vycházíme z příkladu uvedeného v dokumentaci:

Hmm,  je kód jazyka, jako   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:

V podstatě to říká, že pro kód  bude   výše , což je adresář pro soubory zpráv v angličtině. Klíč  je obvykle stejný jako , ale bez předpony.

Dobře. Nyní uložme tento soubor někam, například do stejné složky, kde je uložen, s názvem. Celý soubor je:

Potom musíme říci naší příponě, aby si tento soubor přečetla. Přidejte následující řádek do :

Poté spusťte skript  podle pokynů na.

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 :

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

Step 3: Adding another file
Now let's add a second file for MyBB for translation. There are two ways to do this:

Approach 1: Adding a new YAML file
Simply add a new YAML file and save it with a new name. Then call it from inside  and follow all the above steps. The file will look something like this:

As obvious in the above example, you have to use a different ID for this new group.

While easy, this approach does not scale to hundreds of different translation units (i.e. files mapped to their message group). At some point you need to update some value, and doing it for all those files is no fun. Fortunately there is another way, shown below.

Approach 2: TEMPLATE syntax
The idea is that we pull common values into a template. Then each group will take missing values from the template and there is no need to repeat them for every group.

Let's get back to MyBB example. Let's say you want to include,   and   in the translatable messages. The YAML file needs to be updated like this:

As obvious in the above example,  is defined only once; addition and removal of files is as easy as adding or removing a section in the above file.

Now if you go to the ManageMessageGroups special page, you will see three items like this:

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.

If there are a lot of files to be included in your project, it may be a good idea to write a script that generated your YAML file for you. An example can be found in trunk/translatewiki/StatusNet/genStatusNet-plugins.php.

Step 4: Aggregate group
Adding an aggregate group and defining the message files as its subgroups has two benefits:


 * Less work for translators to select different message groups, in particular for maintenance work. Translators can simply open the aggregate group and translate or update everything that needs updating or translation for all the groups.
 * Statistics can be reported on the aggregate group level, i.e. whole project.

In order to define an aggregate group, you need to add the following section right after the TEMPLATE section and before the definition of individual subgroups:

This gets us pretty close, but there is still one step missing. At this point, if you go to Special:Translate, you will see the MyBB parent group (and it in fact works!) but also the subgroups listed as separate groups. :(

This is the way to fix it. Add the following line to your :



This takes all groups whose id match the given pattern, shows the first group, and hides everything else below that first group. A bit ugly, but it works. This construction only supports two layers, even though aggregate groups can be part of aggregate groups.

If you go to Special:Translate now, you will only see the parent group MyBB listed. Additionally, you will see a link "Show 3 subgroups"; clicking on that will show you the names of subgroups.

Check out the manual for TAGS and other sections we didn't go through in this document.

Step 5: Cleaning up
YAML files of projects supported by translatewiki.net are committed to the repository on Git.

In translatewiki.net, the  lines are actually in. Sandboxwiki at translatewiki.net does not have a  file, which is why we added everything in.