Jump to content

Přeložitelné moduly/Navrhovaná řešení

From mediawiki.org
This page is a translated version of the page Translatable modules/Proposed solutions and the translation is 100% complete.

Projekt Přeložitelné moduly se snaží vytvořit nový rámec pro lokalizaci modulů.

Zde je k diskusi navrženo několik navrhovaných řešení úložiště.

Jedním z hlavních cílů této konzultace je rozhodnout, které z těchto řešení implementovat a doporučit všem vývojářům modulů.

Přeložitelná stránka

Popis

Použijte něco podobného jako Module:ModuleMsg na Meta, ale standardizovaného:

  • Vložte všechny zprávy na běžnou wikitextovou stránku označenou k překladu.
  • Mějte k dispozici standardní Lua funkce pro jejich načítání (spíše než modul jako Module:ModuleMsg na každé wiki).

Výhody

  • Označování stránek k překladu je administrátorům překladů známé.
  • Může fungovat i pro šablony.
  • Každý překlad je wiki stránka. Je to dobré pro uvedení zdroje, historii, oddělené zpracování atd.

Nevýhody

  • Ve výchozím nastavení jsou značky překladových jednotek čísla. Použití čísel jako klíčů zpráv znemožňuje čtení kódu. Je možné nahradit čísla řetězci, ale jak je uvedeno výše, způsob, jak to provést v rozšíření Translate, není v současné době dobře zdokumentován. To lze pravděpodobně vyřešit řádnou dokumentací a standardizací této funkce rozšíření Translate.
  • Není jasné, jak budou fungovat parametry ($1 atd.) a další funkce wiki syntaxe i18n (GENDER, PLURAL atd.). Nejsou nutně kompatibilní s obsahovými stránkami wikitextu.
  • Toto může fungovat pro lokalizaci modulů v rámci jedné wiki, ale nemusí to nutně fungovat, když se moduly stanou globálními.
  • Bude potřeba řešení pro vyhledávání stránek k překladu. V současné době selektor skupiny zpráv zobrazuje pouze všechny přeložitelné stránky.
  • V době globálních modulů a šablon není jasné, jak se to bude lokálně přizpůsobovat na wikinách.
  • Možné problémy s výkonem, pokud je každý překlad zprávy načten samostatně, a při zpracování záložních verzí. Existuje Action API messagecollection, ale pravděpodobně neexistuje žádné pěkné Lua nebo Wikitext API pro načítání překladů.

Soubor JSON .tab ve jmenném prostoru Data na Commons

Popis

Použijte něco podobného tomu, co dělá Module:TNT, ale formalizovaně:

  • Uložte všechny zdrojové zprávy do souboru JSON v jmenném prostoru Data na Commons ve formátu "banana", podobně jako v rozšířeních MediaWiki, včetně qqq pro dokumentaci.
  • Stejnou syntaxi lze použít jako pro základní a rozšiřující zprávy.
  • Vylepšete rozšíření Translate tak, aby načítalo zdrojové zprávy a zapisovalo překlady do souborů JSON podle jazyka.
  • Přidejte do standardní knihovny Scribunto funkce Lua pro načítání zpráv.
  • Pro uspořádání přeložitelného souboru pro pohodlné zobrazení v selektoru skupin zpráv v Translate použijte jiný soubor JSON.

Výhody

  • Formát souboru je stejný jako u přípon.
  • Tyto stránky jsou již globálně přístupné z modulů.
  • Nezpracované stránky jsou snadno dostupné pro JavaScriptové gadgety, které převedou JSON do nativního objektu, který v případě potřeby obsahuje všechny překlady. Pro načtení jednoho jazyka nebo záložní verze může být potřeba API, což zlepší přístup k síti. JavaScriptové gadgety preferují jeden jediný dotaz pro všechny zprávy, uložený v mezipaměti klienta.

Nevýhody

  • V rozšíření Translate bude nutné vyvinout a spravovat novou podporu formátu souborů (FFS). Budeme potřebovat nový typ MessageGroup a také MessageLoading.
  • V době globálních modulů a šablon není jasné, jak se to bude lokálně upravovat na wikinách.

Soubor JSON ve slotu MCR

Popis

Podobné jako "JSON .tab soubor v jmenném prostoru Data", ale:

  • Uložte všechny zdrojové zprávy do souboru JSON v jmenném prostoru Data na Commons ve formátu "banana", podobně jako v rozšířeních MediaWiki, včetně qqq pro dokumentaci.
    • (Je třeba se rozhodnout, zda uložit všechny jazyky do jedné struktury JSON, nebo do samostatného slotu pro každý jazyk.)
  • Soubor JSON je uložen jako slot MCR se stránkou wiki, která ukládá kód modulu.
  • Stejnou syntaxi lze použít jako pro základní a rozšiřující zprávy.
  • Vylepšete rozšíření Translate tak, aby načítalo zdrojové zprávy a zapisovalo překlady do souborů JSON podle jazyka.
  • Přidejte do standardní knihovny Scribunto funkce Lua pro načítání zpráv.
  • Pro uspořádání přeložitelného souboru pro pohodlné zobrazení v selektoru skupin zpráv v Translate použijte jiný soubor JSON.

Výhody

  • Elegantně uloženo s modulem.
  • Pokud se modul stane globálním, stanou se s ním globální i data.
  • Vytváření MCR slotů může vyžadovat určitá oprávnění, ale to je pravděpodobně v pořádku, protože vytváření nových souborů se zprávami stejně není pro úplné začátečníky, zatímco úpravy jsou stále přístupné většině editorů.

Nevýhody

  • Bude vyžadovat určitý vývoj pro vytvoření podpory slotů.
  • Nový FFS bude muset být vyvinut a spravován v Translate. Budeme potřebovat nový typ MessageGroup a také MessageLoading.
  • V době globálních modulů a šablon není jasné, jak se to bude lokálně upravovat na wikinách.
  • Častá nevýhoda přístupu MCR slotů: Oprávnění a historie se zcela promíchají. Programování kódu má stejnou úroveň ochrany jako překlady, každý překladatel je oprávněn upravovat efektivní kód. Neexistuje žádná historie efektivních změn v globálním programování, ale topí se mezi úpravami překladů. Pokud by ochrana a historie byly odděleny, jednalo by se o samostatné stránky, nikoli o MCR.

TemplateData

Popis

Podobné jako výše uvedené návrhy JSON, ale s JSON uloženým uvnitř TemplateData:

  • Uložte všechny zdrojové zprávy jako hodnotu JSON v TemplateData přidruženém k šabloně, která modul používá. Kromě toho, že je součástí větší struktury JSON, je formát jinak stejný jako formát "banana", například v rozšířeních MediaWiki, včetně qqq pro dokumentaci.
  • Stejnou syntaxi lze použít jako pro základní a rozšiřující zprávy.
  • Vylepšete rozšíření Translate tak, aby načítalo zdrojové zprávy a zapisovalo překlady do souborů JSON podle jazyka.
  • Přidejte do standardní knihovny Scribunto funkce Lua pro načítání TemplateData a zpráv.
  • Pro uspořádání přeložitelného souboru pro pohodlné zobrazení v selektoru skupin zpráv v Translate použijte jiný soubor JSON.

Výhody

  • Kontinuita se stávající technologií TemplateData.
    • Zejména TemplateData již má určitou podporu pro internacionalizaci, např. popis šablony může být v několika jazycích.
  • Klíče lze spravovat pomocí editoru TemplateData (to však bude vyžadovat aktualizace uživatelského rozhraní editoru).
  • Technologie může být později sdílena se šablonami.
  • Pokud se TemplateData někdy přesune do MCR (T56140), přesune se tam také.

Nevýhody

I když je to dostatek místa pro zhruba 700 zpráv, musíme spravovat asi 400 jazyků. Při použití rychlosti, s jakou jsou lokalizovány základní zprávy MediaWiki, je místo pouze pro 20 zpráv.

  • Vyžaduje přidání podpory TemplateData do Scribunto. (T107119)
  • V Translate bude nutné vyvinout a udržovat novou podporu formátu souborů (FFS).
  • V době globálních modulů a šablon není jasné, jak se to bude lokálně upravovat na wikinách.

Zprávy jako stránky v prostoru MediaWiki

Popis

  • Uložte přeložitelné zprávy do jmenného prostoru MediaWiki, stejně jako základní a rozšiřující zprávy.
  • Vytvořte skupiny zpráv pro Translate pomocí souboru JSON nebo YAML uloženého jako wiki stránka. Toto je již podporováno (WikiMessageGroup) jako seznamy oddělené mezerami, nicméně uvnitř samotné wiki není k dispozici žádný mechanismus pro definování skupin.

Výhody

  • Většinou přirozené pro zpracování v Translate (ale podpora pro organizér skupin zpráv bude pravděpodobně muset být vyvinuta).
  • Pro Scribunto je to většinou přirozené – funkce pro analýzu načítání zpráv již existují.
  • Lze přizpůsobit na lokálních wikinách, když se moduly stanou globálními, stejným způsobem jako se přizpůsobují zprávy z jádra a rozšíření.

Nevýhody

  • Dvojí povinnost, a to jak vypisování zpráv, tak i jejich samostatné vytváření.
  • Vytváření zpráv bude vyžadovat oprávnění sysop nebo editační rozhraní, což zpřístupní komplexní vývoj modulů a opravu chyb mnohem menšímu počtu lidí.
  • Nedostatek balení. Mnoho distribuovaných vývojových týmů bude vytvářet a spravovat balíčky modulů, globálních šablon doprovázených TemplateData nebo JavaScript gadgetem, ale nemělo by docházet ke konfliktům v názvech mezi balíčky podobných cílů. Mělo by být spojeno v balíčku.

Tabulka Lua

Popis

Udělejte to podobně jako existující řešení v Module:I18n na Commons a Module:Wikidades/i18n na katalánské Wikipedii, ale:

  • Standardizujte formát tabulky Lua: Rozhodněte, zda se jedná o jeden klíč zprávy odkazující na mnoho překladů indexovaných podle jazyka, nebo o jazykové kódy odkazující na mnoho klíčů zpráv atd.
  • Přidejte do standardní knihovny Scribunto funkce pro načítání těchto zpráv.
  • Přidejte do Translate podporu pro čtení a zápis tohoto formátu souborů.

Výhody

  • Přirozené pro Lua.
  • Kontinuita s alespoň některými stávajícími řešeními.

Nevýhody

  • Toto je skutečný kód, který je náchylný k chybám a méně bezpečný. (Dříve jsme už měli zprávy v PHP polích a teď jsme se od toho odklonili.)
  • Pro Lua je to přirozené, ale co když Scribunto získá podporu pro další programovací jazyky? Opakovaně se objevují požadavky na podporu JavaScriptu, Pythonu, Rexxu atd.
  • Jazykové kódy, které obsahují pomlčky, musí být psány v hranatých závorkách, což není zřejmé a je náchylné k chybám.

Tabulka srovnání navrhovaných řešení

Funkce Přeložitelná stránka Soubor JSON .tab v jmenném prostoru Data na Commons Soubor JSON ve slotu MCR TemplateData Prostor MediaWiki pro zprávy Tabulka Lua
Převod změn (viz podrobnosti v části "Technické aspekty") Nedůležité Důležité Důležité Důležité Nedůležité Důležité
Požadavek oprávnění k úpravě zdrojových zpráv Označit pro překlad Ne Vytvoření slotů Ne Ano - systémový správce rozhraní pro úpravy Ne
Přeložit FFS Žádné Důležité Důležité Důležité Žádné Důležité
Přizpůsobení na wiki Nejasné Nejasné Nejasné Nejasné Pravděpodobně snadné, ale může to mít problémy s výkonem Nejasné
Podobné jako jádro a rozšíření Ne Velmi podobné Velmi podobné Většinou podobné Ano, ale pouze pro editory na Wikipedii Ne
Čitelné klíče zprávy Křehké, potřebuje opravit v Translate Ano Ano Ano Ano Ano
Import a export Nesnadné Nesnadné Jednoduché Jednoduché Nesnadné Pravděpodobně snadné
Lze použít i v šablonách na stejné wiki Přímo Prostřednictvím modulu Prostřednictvím modulu Prostřednictvím modulu Přímo Prostřednictvím modulu
Zvládání fuzzyingu Pravděpodobně už hotové Vyžaduje složitějsí práci Vyžaduje složitějsí práci Vyžaduje složitějsí práci Pravděpodobně už hotové Vyžaduje složitějsí práci

Další informace