Nápověda:Rozšíření:Translate/Součásti
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
Rozšíření Translate (překladač) je v mnoha ohledech rozsáhlé. Nejpravděpodobnějšími způsoby, jak rozšířit Translate, je přidat podporu pro nové formáty souborů (odkaz na sekci) nebo nové skupiny zpráv (odkaz na sekci). Někdy je také užitečné napsat novou revizi zpráv (odkaz na sekci) nebo rozšířit Translate pomocí háčků (odkaz na sekci). Někdy se můžete domluvit pouze pomocí stávajícího webu API .
Kromě již zmíněných konceptů existuje v Translate mnoho dalších důležitých konceptů a tříd, které je užitečné pochopit při používání Translate. Tato stránka si klade za cíl komplexně podrobně popsat všechny součásti Translate (překladač).
Primární rozšiřitelné komponenty
WebAPI
- Podrobná dokumentace o API
Kromě háčků a rozhraní, která lze použít pouze v kódu PHP, poskytuje WebAPI přístup k mnoha skupinám zpráv a překládá související informace a akce. Je založen na MediaWiki API framework. Podporuje mnoho výstupních formátů jako json a xml.
Podpora formátu souboru (FFS)
- Podrobná dokumentace o podpoře formátu souboru
Rozšíření Translate podporuje překlad obsahu, který není wiki, jako jsou zprávy softwarového rozhraní, prostřednictvím tříd File Format Support (FFS). Tyto třídy implementují rozhraní FFS a abstraktně analyzují a generují obsah souboru. Třídy FFS používá třída FileBasedMessageGroup prostřednictvím konfiguračních souborů YAML.
Skupiny zpráv
- Podrobná dokumentace o skupinách zpráv
Skupiny zpráv sdružují kolekci zpráv.
Přicházejí v různých typech: Přeložitelné stránky, soubory SVG nebo zprávy softwarového rozhraní uložené v různých formátech souborů.
Každá instance skupiny zpráv má jedinečný identifikátor, název a popis.
V kódu jsou skupiny zpráv primárně odkazovány svým identifikátorem, zatímco třídu MessageGroups
lze použít k získání instancí pro dané ID.
Skupiny zpráv mohou také řídit mnoho akcí souvisejících s procesem překladu, jako jsou povolené jazyky překladu a stavy pracovního postupu skupiny zpráv.
Obvykle se toto chování vrací ke globálním výchozím hodnotám.
The two primary ways to register message groups to Translate are the TranslatePostInitGroups hook and YAML configuration .
Překladatelské pomůcky (pomocníci)
- In-depth documentation about translation aids
Překladové pomůcky jsou malé moduly, které překladateli poskytují užitečné a potřebné informace při překládání. Různé pomůcky mohou poskytnout návrhy z překladové paměti a strojového překladu, dokumentaci ke zprávě nebo i tak základní věc, jako je definice zprávy – text, který je třeba přeložit.
Translate přichází s mnoha třídami pomoci. V současné době neexistuje žádný háček pro přidávání nových tříd. Každá třída, která rozšiřuje třídu TranslationAid, potřebuje implementovat pouze jednu metodu nazvanou getData. Měla by vrátit informace ve strukturovaném formátu (vnořená pole), která se pak zpřístupní prostřednictvím modulu webového rozhraní API ApiQueryTranslationAids. Kromě třídy pomůcek jsou nutné změny, aby bylo možné skutečně použít poskytnutá data v překladovém editoru (editorech).
Zvláštním případem překladatelských pomůcek jsou služby strojového překladu. Podívejte se na další část.
Webové služby
Adding more machine translation services can easily be done by extending the TranslationWebService class. Příklady viz podadresář webservices. K implementaci takové třídy budete potřebovat několik základních informací:
- Službu URL
- Jaké jazykové páry jsou podporovány
- Zda používají kódy jazyků, které se liší od kódů používaných v MediaWiki
- Zda služba potřebuje klíč API
When you have this information, it is straightforward to write the mapCode, doPairs and doRequest methods. You should use the TranslationWebServiceException to signal errors. Chyby jsou automaticky protokolovány a sledovány, a pokud služba přestane fungovat, bude automaticky pozastavena, aby se předešlo zbytečným požadavkům na ni. The suggestions will automatically be displayed in the translation editor via the MachineTranslationAid class and the ApiQueryTranslationAids WebAPI module. Podívejte se také na $wgTranslateTranslationServices, abyste viděli, jak jsou tyto služby registrovány.
Kontroloři zpráv
Používáme počítače k zachycení jednoduchých chyb v překladech, jako jsou nevyvážené závorky nebo nepoužití proměnného zástupného symbolu. Tyto kontroly mohou vydávat varování, která se zobrazují v překladovém editoru (neustále se aktualizují). Jakékoli varování v uloženém překladu také označí překlad jako zastaralý (v žargonu nejasný). Každá skupina zpráv určuje, které kontroly používá.
Další základní součásti
Soubor zpráv
Shromažďování zpráv poskytuje přístup k seznamu zpráv pro skupinu zpráv. Používá se k načtení sady jazyků pro určitou skupinu v určitém jazyce. Poskytuje funkce stránkování a filtrování.
V současnosti platí omezení, že všechny zprávy v kolekci musí být ve stejném oboru názvů. To zabrání vytváření agregovaných skupin, které zahrnují skupiny, které mají zprávy v různých jmenných prostorech.
Zde je krátký příklad, jak použít shromažďování zpráv k načtení všech finských překladů skupiny core a vytištění prvních deseti z nich:
$group = MessageGroups::getGroup( 'core' );
$collection = $group->initCollection( 'fi' );
$collection->filter( 'ignored' );
$collection->filter( 'translated', false );
$collection->loadTranslations();
$collection->slice( 0, 10 );
foreach ( $collection->keys() as $mkey => $title ) {
echo $title->getPrefixedText() . ': ';
echo $collection[$mkey]->translation() . "\n\n";
}
Zpráva
Pomocné třídy
Vyhledávač fontů
Při vykreslování bitmapové grafiky jsou potřeba vhodná písma pro každý jazyk nebo skript.
K vyřešení tohoto problému byla napsána třída FCFontFinder.
K nalezení vhodného písma používá příkaz fc-match
z balíčku fontconfig
(takže toto nefunguje ve Windows).
Aby to bylo užitečné, mělo by být na server nainstalováno mnoho dalších písem.
Může vrátit cestu k souboru písma nebo název písma, podle toho, co je vhodnější.
Mezipaměť skupiny zpráv
Zprávy skupin zpráv založených na souborech jsou uloženy v souborech CDB. Každý jazyk každé skupiny má svůj vlastní soubor mezipaměti CDB. Důvod pro soubory mezipaměti je dvojí.
Zaprvé poskytují neustálý a efektivní přístup k datům zpráv a vyhýbají se tak potenciálně drahé analýze souborů na různých místech. Například seznam klíčů zpráv pro každou skupinu lze efektivně načíst při přestavbě indexu zpráv.
Druhým důvodem je, že soubory mezipaměti se používají spolu s překlady na wiki ke zpracování změn externích zpráv. Snímek stavu překladů v souborech a wiki (doufejme, že v tu chvíli konzistentní) nám umožňuje automaticky odečíst, zda bylo něco změněno na wiki nebo externě, a učinit inteligentní rozhodnutí, přičemž zůstanou pouze skutečné konflikty (zprávy změněné externě i na wiki od posledního snímku), který má vyřešit správce překladu.
Nástroje pro skupiny zpráv
Index zpráv
Index zpráv je zpětná mapa všech známých zpráv. Poskytuje efektivní odpověď na otázky je toto známá zpráva a do kterých skupin tato zpráva patří. Musí být rychlý pro vyhledávání klíčů jedné a více zpráv. Je implementováno více různých backendů s různými kompromisy.
- Serializovaný soubor se rychle analyzuje, ale neposkytuje náhodný přístup a je velmi neefektivní, když počet klíčů roste.
- Soubor CDB zabírá více místa na disku, ale poskytuje náhodný přístup a přiměřeně rychlé vyhledávání, zatímco načítání všeho do paměti je pomalejší.
- Backend databáze poskytuje efektivní náhodný přístup a plné zatížení s náklady na trochu pomalejší individuální vyhledávání. Také nemusí zapisovat do žádných souborů, aby se předešlo problémům s oprávněními.
- K dispozici je také paměťový backend (memcached, apc), který by mohl být užitečnou alternativou k databázovému backendu ve více serverových nastaveních, aby se snížila hádka o databázi.
Index zpráv nepodporuje přírůstkové opětovné sestavení. Přestavba indexu je tedy relativně náročná na zdroje, když se zvýší počet skupin zpráv a klíčů zpráv. V závislosti na skupině zpráv to může zahrnovat analýzu souborů nebo provádění databázových dotazů a načítání definic, což může zabírat hodně paměti. Přestavba indexu zpráv se spouští na různých místech v Translate a ve výchozím nastavení se provádí okamžitě během požadavku. Jak se zpomaluje, lze jej zpozdit prostřednictvím fronty úloh MediaWiki a spustit mimo webové požadavky.
Tabulka zpráv
Tabulka metadat
Revtag
Kód statistik
Řetězec dohazovač/destruktor
Ttmserver (překladová paměť)
- In-depth documentation at Translation memories .
- Blogový příspěvek o historii této funkce na Niklas' blog.
Ttmserver je název rozhraní překladové paměti.
Podporuje více backendů pro vkládání a dotazování na návrhy překladů.
Kód se nachází v adresáři ttmserver
.
Různé věci: integrace RC, preference, sada nástrojů, úlohy
Uspořádání úložiště
Soubory v kořenovém adresáři úložiště zahrnují:
- Standardní soubory rozšíření MediaWiki jako
Translate.php
, překlady a některé soubory dokumentace jakohooks.txt
aREADME
, které obsahují poznámky o změnách. - Hlavní překladové třídy jako
MessageCollection
aMessage
a některé různé nástroje ještě nebyly přesunuty pod nástroje utils.
Zbytek kódu je v podadresářích. Hlavní části mají každá svůj vlastní podadresář:
api
- pro kód WebAPIffs
- pro kód podpory formátu souborumessagegroups
- pro skupiny zprávscripts
- pro skripty příkazového řádkutag
- pro kód překladu stránkyttmserver
- pro kód překladové pamětispecials
- pro všechny speciální stránkytests
- pro všechny testy jednotek PHP
Většina kódu je pod utils. Některé další složky pro nekódování:
data
- pro různé datové souborylibs
- pro svázané závislosti knihovenresources
- pro všechny css, skripty a obrázkysql
- pro všechny definice SQL tabulek