Translatable modules/Proposed solutions/nl

 Het project Translatable modules probeert een een nieuw framework te maken voor het vertalen van modules.

Er zijn meerdere voorstellen voor een oplossing voor de opslag in de discussie gebracht.

Een van de hoofddoelen van deze consultatie is het beslissen welke van deze voorstellen wordt geïmplementeerd en aan de module-bouwers wordt aanbevolen.



Beschrijving
Iets als Module:ModuleMsg op Meta gebruiken, maar dan gestandaardiseerd:


 * Zet alle berichten op een voor vertaling gemarkeerde gewone wikitext pagina.
 * Maak standaard Lua functies om ze te laden (eerder dan een module als Module:ModuleMsg op elke wiki).

Voordelen

 * Het voor vertaling markeren van pagina's is iets vertrouwds voor vertalingenbeheerders.
 * Het werkt ook voor sjablonen.
 * Elke vertaling is een wiki-pagina. Het is goed voor de credit, geschiedenis, gescheiden verwerking, enz.

Nadelen

 * De markering van een vertaaleenheid is een getal. Door getallen als keys voor de teksten te gebruiken wordt de code onleesbaar. Het is zoals hierboven aangegeven mogelijk om de getallen door teksten te vervangen, maar dat is in de extensie Translate matig gedocumenteerd. De documentatie van deze functie zou dus wat aangepast moeten worden.
 * Het is onduidelijk hoe de parameters ($1, enz.) en andere wiki syntaxis i18n functies (GENDER, PLURAL, enz.) werken. Ze hoeven nu niet compatibel te zijn met wikitext pagina's.
 * Dit kan op een wiki werken voor de module localization, maar hoeft niet te werken als de modules globaal worden.
 * Er is een oplossing nodig om de pagina's op te zoeken die vertaald moeten worden. Op dit moment toont de selectie van de berichtengroepen alle vertaalbare pagina's.
 * In de tijd van globale modules en sjablonen is het onduidelijk hoe het lokaal wordt aangepast op de wiki's.
 * Mogelijk problemen met de performance als elke vertaling per keer wordt geladen en het afhandelen van het terugvallen als de vertaling niet lukt. Er is een Action API, maar geen mooie Lua of Wikitext API voor het laden van vertalingen.

Description
Use something similar to what Module:TNT is doing, but formalized:


 * Plaats alle bronberichten in een JSON-bestand in de Data namespace op Commons in het “banana” formaat, zoals in MediaWiki extensies, met qqq voor documentatie.
 * Deze syntaxis kan ook worden gebruikt voor core en extensie teksten.
 * Voeg aan de extensie Translate toe het laden van de bronberichten en het schrijven van de vertalingen per taal naar JSON-bestanden.
 * Voeg Lua functies toe aan de standaard Scribunto bibliotheek om de berichten te laden.
 * Gebruik een ander JSON-bestand voor het organiseren van de vertaalbare bestand voor het in Translate gebruikersvriendelijker tonen van de selectie van de berichtengroep.

Voordelen

 * Het bestandsformaat is gelijk aan dat bij extensies.
 * Deze pagina's zijn voor modules al globaal benaderbaar.
 * De pagina's zijn in ruwe vorm eenvoudig benaderbaar voor JavaScript gadgets, die het JSON-bestand omzetten in een intern object dat alle verlangde vertalingen bevat. Er kan een API nodig zijn om een enkele taal op te halen of voor het terugvallen, wat het netwerkverkeer verbeterd. JavaScript gadgets hebben het liefst een enkele opdracht om alle vertalingen op te halen die dan in de client cache komen te staan.

Nadelen

 * Er moet ondersteuning voor een nieuw bestandsformaat (FFS) worden ontwikkelt en onderhouden in de extensie Translate. Wij hebben en nieuw type MessageGroup nodig zowel als voor MessageLoading.
 * In de tijd van globale modules en sjablonen is het onduidelijk hoe het lokaal wordt aangepast op de wiki's.



Beschrijving
Dit is gelijk als bij het bestand “JSON .tab in de Data namespace”, maar:


 * Plaats alle bronberichten in een JSON-bestand in de Data namespace op Commons in het “banana” formaat, zoals in MediaWiki extensies, met qqq voor documentatie.
 * (Er moet een beslissing worden genomen of de gegevens van alle talen in een JSON structuur worden gezet, of een slot per taal.)
 * Het JSON-bestand is als een MCR-slot opgeslagen met de wiki pagina met de code van de module.
 * Deze syntaxis kan ook worden gebruikt voor core en extensie teksten.
 * Voeg aan de extensie Translate toe het laden van de bronberichten en het schrijven van de vertalingen per taal naar JSON-bestanden.
 * Voeg Lua functies toe aan de standaard Scribunto bibliotheek om de berichten te laden.
 * Gebruik een ander JSON-bestand voor het organiseren van de vertaalbare bestand voor het in Translate gebruikersvriendelijker tonen van de selectie van de berichtengroep.

Voordelen

 * Wordt elegant opgeslagen met de module.
 * Als de module globaal wordt dan worden de gegevens ook globaal.
 * Er kunnen bij het aanmaken van MCR-slots wat rechten benodigd zijn, maar dat is geen probleem omdat het aanmaken van nieuwe berichtenbestanden niet iets is wat aan nieuwkomers zal worden overgelaten. Het bewerken is voor de meeste bewerkers benaderbaar.

Nadelen

 * Er is wat ontwikkeling nodig on het aanmaken van slots te gaan ondersteunen.
 * Een nieuw FFS in Translate moet worden ontwikkeld en onderhouden. Wij hebben en nieuw type MessageGroup nodig zowel als voor MessageLoading.
 * In de tijd van globale modules en sjablonen is het onduidelijk hoe het lokaal wordt aangepast op de wiki's.
 * Een gebruikelijk nadeel van de MCR-slot aanpak: vermenging van rechten en geschiedenis. Het programmeren van code heeft hetzelfde beveiligingsniveau als vertalingen, elke vertaler heeft dus het recht om de effectieve code aan te passen. Bij de globale programmering is er geen geschiedenis van effectieve wijziging, dit wordt ondergesneeuwd tussen de bewerkingen vanwege het vertalen. Als de beveiliging en de geschiedenis wordt gescheiden, dan zijn dat individuele pagina's maar geen MCR.

Beschrijving
Gelijkwaardig aan de bovenstaande JSON-voorstellen, maar met de JSON binnen TemplateData opgeslagen:


 * Slaat alle bronteksten als een JSON-waarde op in TemplateData geassocieerd met een sjabloon die de module gebruikt. Behalve dat het een onderdeel is van een grotere JSON structuur is het formaat gelijk aan het formaat “banana”, zoals bij MediaWiki extensies, inclusief qqq voor documentatie.
 * Deze syntaxis kan ook worden gebruikt voor core en extensie teksten.
 * Voeg aan de extensie Translate toe het laden van de bronberichten en het schrijven van de vertalingen per taal naar JSON-bestanden.
 * Voeg Lua functies toe aan de standaard Scribunto bibliotheek om TemplateData en de berichten te laden.
 * Gebruik een ander JSON-bestand voor het organiseren van de vertaalbare bestand voor het in Translate gebruikersvriendelijker tonen van de selectie van de berichtengroep.

Voordelen

 * Doorgaan met bestaande TemplateData technologie.
 * TemplateData kent al wat ondersteuning voor internationalisatie, bijvoorbeeld sjabloonbeschrijving in meerdere talen.
 * De 'keys' kunnen via de TemplateData editor worden beheerd (daar is wel een wijziging van de UI van de editor voor nodig).
 * De technologie kan later worden gedeeld met de sjablonen.
 * Als TemplateData later naar MCR zou worden verplaatst, dan wordt het daar naar verplaatst.

Nadelen

 * There is a hard-coded limit of 64 KiB (gzipped) in the TemplateData extension’s code. While this is enough room for something like 700 messages, we have about 400 languages to manage. When using the rate at which MediaWiki core messages are localized, there is room for only 20 messages.
 * Hiervoor moet ondersteuning voor TemplateData worden toegevoegd aan Scribunto.
 * Er moet ondersteuning voor een nieuw bestandsformaat (FFS) worden ontwikkelt en onderhouden in de extensie Translate.
 * In de tijd van globale modules en sjablonen is het onduidelijk hoe het lokaal wordt aangepast op de wiki's.



Beschrijving

 * Sla de vertaalbare berichten op in de MediaWiki namespace, net zoals bij de berichten in de core en de extensies.
 * Maak voor Translate berichtengroepen aan met een JSON of YAML bestand dat als wiki-pagina wordt opgeslagen. Dit wordt al ondersteund (WikiMessageGroup) met spatie gescheiden lijsten, er is echter geen mechanisme bekend om groepen te definiëren in de wiki zelf.

Voordelen

 * Dat is de meest natuurlijke manier om in Translate te werken (er moet hiervoor waarschijnlijk een 'organizer' van de  berichtengroepen worden ontwikkeld).
 * In Scribunto zijn er al parserfuncties voor het laden van procesberichten.
 * Kan op lokale wiki's worden aangepast wanneer de modules globaal worden op dezelfde manier dat dat gedaan wordt voor de berichten van de core en de extensies.

Nadelen

 * Dubbele functie van berichtenlijsten als ook het ze gescheiden aanmaken.
 * Voor het aanmaken van berichten zijn beheerders of interface-bewerkersrechten nodig. Daardoor kunnen minder mensen zorgen voor een uitgebreidere ontwikkeling van modules en het oplossen van fouten.
 * Gebrek aan fysieke eenheid. Veel gedistribueerde ontwikkelteams maken en onderhouden packages van modules, globale sjablone, samen met TemplateData of JavaScript gadget, maar dat zou geen naamconflicten moeten geven tussen packages met vergelijkbare doelen. Moet per package worden gebundeld.

Description
Do it similarly to existing solutions in Module:I18n on Commons and Module:Wikidades/i18n on the Catalan Wikipedia, but:


 * Standardize the Lua table format: Decide whether it is one message key pointing to many translations indexed by language, or language codes pointing to many message keys, etc.
 * Voeg functies toe aan de standaard Scribunto bibliotheek om de berichten te laden.
 * Add support for reading and writing this file format to Translate.

Voordelen

 * Natural for Lua.
 * Continuity with at least some existing solutions.

Nadelen

 * This is actual code, which is error-prone and less safe. (We already used to have messages in PHP arrays, and moved away from it.)
 * It’s natural for Lua, but what if Scribunto acquires support for other programming languages? There are recurring requests to support JavaScript, Python, Rexx, etc.
 * Language codes that have hyphens have to be written with square brackets, which is non-obvious and error-prone.

 = Tabel met voorgestelde oplossingen =



Meer informatie

 * Discussie over Translatable modules.