Nápověda:Rozšíření:Translate/Součásti

This page is a translated version of the page Help:Extension:Translate/Components and the translation is 100% complete.

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)

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

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)

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ěť)

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 jako hooks.txt a README, které obsahují poznámky o změnách.
  • Hlavní překladové třídy jako MessageCollection a Message 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 WebAPI
  • ffs - pro kód podpory formátu souboru
  • messagegroups - pro skupiny zpráv
  • scripts - pro skripty příkazového řádku
  • tag - pro kód překladu stránky
  • ttmserver - pro kód překladové paměti
  • specials - pro všechny speciální stránky
  • tests - 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é soubory
  • libs - pro svázané závislosti knihoven
  • resources - pro všechny css, skripty a obrázky
  • sql - pro všechny definice SQL tabulek