Template globali/Dettagli della proposta

From mediawiki.org
This page is a translated version of the page Global templates/Proposed specification and the translation is 100% complete.

Questa è una proposta di requisiti minimi per realizzare template e moduli globali.

Una sintesi di questa proposta si può trovare qui .

Questo NON è un progetto attualmente in corso, né ufficialmente approvato e prossimo a partire in un qualsiasi momento (almeno per adesso). Si tratta solo di un'idea, per quanto molto dettagliata.

L'obiettivo finale è di creare un gruppo di utenti e di tecnici che sia interessato a realizzare questo progetto, con tutti i requisiti necessari in termini di pianificazione, realizzazione, coinvolgimento delle comunità, eccetera.

Questo documento non entra nei dettagli tecnici, come l'archiviazione, la memorizzazione nella cache, l'implementazione, la progettazione del codice PHP, eccetera. Il suo scopo è cercare di definire i requisiti di come una tale funzionalità possa funzionare dal punto di vista degli utenti:

  1. che creano e curano template e moduli;
  2. che creano e curano pagine che contengono template e moduli, includendo in questa definizione tutti gli utenti e tutte le tipologie di pagine:
    • tutti i livelli di esperienza, da coloro che sono completamente a digiuno dell'argomento a coloro che hanno migliaia di edit alle spalle;
    • tutti gli strumenti di modifica, dal wikicodice a Visual Editor e Content Translation, a tutti gli altri mezzi (compresi i bot);
    • tutte le wiki: Wikipedia, Wikizionario, Wikivoyage, Wikidata, Incubator, eccetera, compresi eventuali futuri nuovi progetti;
    • tutte le lingue: inglese, francese, russo, spagnolo, armeno, persiano, zulu, manipuri, eccetera;
    • tutti i tipi di pagine: voci, pagine di discussione (delle voci, degli utenti o del progetto), pagine di progetto, categorie, manuali dei template, eccetera. {{🌎🌍🌏}}

In poche parole

Una larga parte delle funzionalità dei progetti Wikimedia si basa su template e moduli Lua. Nel formato corrente, non possono essere condivisi fra i vari progetti. A causa di questo, sono difficilmente integrabili con i moderni tool per creare e modificare voci, come Visual Editor, Wikidata e Content Translation. Sono anche difficilmente adattabili a una visione da mobile. Questo causa uno spreco di tempo per gli utenti e grosse difficoltà in particolare per gli utenti nuovi e quelli delle comunità più piccole. Deve essere possibile condividere queste funzionalità su tutti i progetti, similmente a quanto avviene con le immagini da Wikimedia Commons. Questo renderà renderà più veloce e stabile lo sviluppo del software e consentirà agli utenti di concentrarsi maggiormente sulla creazione di testi. {{🌎🌍🌏}}

Il problema

Nota: salvo dove diversamente specificato, il discorso sui template vale anche per i moduli Lua/Scribunto .

I template permettono di sfruttare una consistente parte delle funzionalità dei progetti Wikimedia. Alcune di queste sono estremamente importanti (per esempio, gli infobox, le note, le “citazioni necessarie”, eccetera). Per un elenco più completo delle funzioni implementate utilizzando i modelli, vedere la Tassonomia . Tutti i lettori possono vederle e tutti gli utenti le incontrano quando modificano una voce. I template sono inoltre usati in moltissimi aspetti della manutenzione dei progetti, come le procedure di cancellazione o di problematicità, le discussioni sulle linee guida, la creazione di wikiprogetti, eccetera.

I template sono un meccanismo molto efficiente per realizzare, implementare e riutilizzare velocemente e su larga scala pezzi di codice e di markup su più pagine. Tuttavia, i template portano con sé anche dei problemi di accessibilità per tutte le categorie di utenti.

Difficoltà comuni a tutti gli utenti in tutte le wiki

Utenti che usano il wikitesto

I template, alle volte, sono difficili da comprendere o modificare per gli utenti che usano il wikitesto. Gli utenti più esperti nell'utilizzare determinati template potrebbero individuarlo ed essere in grado di modificare una pagina che lo include. Tuttavia, utenti meno familiari con determinati template devono consultarne la documentazione (quando è presente), anche se già posseggono esperienza nel modificare una wiki e con altri template. E gli utenti meno esperti in generale potrebbero rimanere sconcertati da quell'ammasso criptico di parentesi graffe, caratteri pipe, segni di uguale, eccetera.

Usare una funzionalità di un template significa innanzitutto sapere che esiste un template, conoscerne il nome e poi digitarlo fra parentesi graffe ({{}}) o copiarlo così com'è da un'altra voce o pagina. Questo non è affatto ovvio per un nuovo utente e, alle volte, anche gli utenti esperti sono costretti a consultare il manuale del template.

Alcune wiki hanno “risolto il problema”, inserendo un bottone apposito nelle toolbar per gli utenti. Tuttavia, nonostante molti dei template siano uguali o molto simili su tutti i progetti, questi bottoni restano localizzati sui singoli progetti.

Utenti che usano Visual Editor

Gli utenti che usano il VisualEditor hanno qualche facilitazione in più quando usano i template, ma anche loro possono incontrare dei problemi. Per esempio, anche in questo caso l'utente deve essere a conoscenza dell'esistenza del template, utilizzare la funzionalità “Inserisci → Template” nell'apposito menu e digitarvi l'apposito nome.

Il menu “Inserisci” del VisualEditor ha funzioni apposite per inserire formule matematiche, geroglifici, spartiti musicali e altre funzioni ancora, ma non ha delle opzioni apposite per i template “Infobox”, “Senza fonte”, “Converti unità”, “Citazione”, eccetera. In altre parole, tutti i template sono gestiti come se fossero tutti uguali (pur sapendo che questo non è affatto vero).

C'è una eccezione al momento: alcune wiki hanno il pulsante “Cita”, che permette di inserire note già formattate con gli appositi template di citazione. Questa, però, è la classica eccezione che conferma la regola. Inoltre, questa funzione necessita di essere configurata manualmente perfino per le sue caratteristiche di base - col risultato che moltissime wiki semplicemente non dispongono affatto di questo pulsante. Un'altra eccezione simile, aggiunta verso fine 2019, è il supporto aggiuntivo per i template “Citazione necessaria”, ma anche questi vanno configurati manualmente progetto per progetto perché il supporto possa funzionare.

Difficoltà per gli utenti che contribuiscono su più di un progetto

Molti template esistono in un progetto, ma non sono presenti in un altro progetto, oppure esistono, ma alcune delle funzionalità sono assenti o funzionano in modo diverso. Per questo motivo, spesso è difficile o addirittura impossibile “riutilizzare” in un altro progetto ciò che si è imparato su un progetto. Questo non succede solo fra progetti in lingue diverse (per esempio, Wikipedia in italiano e in inglese), ma anche su differenti progetti nella stessa lingua (per esempio, Wikipedia in italiano e Wikisource in italiano).

Inoltre, i template rendono più difficili le traduzioni per gli utenti che contribuiscono su progetti in lingue diverse, sia se realizzate manualmente sia se fatte tramite Content Translation. Spesso gli utenti sono costretti a saltare a piè pari i template, oppure ad aggiungerli o sistemarli in un secondo momento, oppure ancora un template può scoraggiare un utente dal completare la traduzione.

Moltissimi dei problemi riscontrati con Content Translation riguardano proprio la gestione dei template.

Nonostante l'estensione abbia una funzionalità che permette di tradurre o quantomeno di automatizzare parte del processo di traduzione, questa funzionalità funziona soltanto se il template ha un corrispettivo nella lingua in cui si sta traducendo e se esiste una traduzione dei parametri corrispondenti. Tutto questo va realizzato per ogni lingua, per ogni template, per ogni parametro ed eventualmente per ogni modifica - nonostante, spesso, le funzionalità dei differenti template siano le stesse.

In teoria, dovrebbe essere possibile trasferire e tradurre automaticamente o quasi tutti i template e i relativi parametri, per permettere agli utenti di concentrarsi sulla traduzione della voce o della pagina vera e propria (che poi è l'area dove il contributo umano è più necessario).

Un template può essere, in effetti, esportato da una wiki all'altra, ma una volta compiuta l'esportazione, di fatto il template diventa un fork della versione originale, rimanendo così com'è oppure venendo sviluppato a sé (e dunque diventando più o meno incompatibile con il template originale). Alcuni utenti possono periodicamente aggiornare a mano le differenti copie, ma questo non è affatto un metodo scalabile o che possa funzionare per tutte le svariate centinaia di progetti che abbiamo.

Anche i parametri di un template possono variare nel nome fra versione e versione, ma avere la stessa funzionalità. Si potrebbe ricorrere agli alias in TemplateData per mappare le differenze di traduzione, ma si tratta di una soluzione sub-ottimale: non è questo lo scopo degli alias e, soprattutto, si è comunque costretti a gestire manualmente ogni traduzione.

Un template è una combinazione di algoritmi, stringhe di testo e formattazione che ne rendono impossibile una traduzione lineare, come invece succede con il codice di base di MediaWiki e delle sue estensioni.

Difficoltà per gli utenti delle comunità minori

Un nuovo progetto Wikimedia viene creato installando le funzioni fondamentali di MediaWiki e un certo numero di estensioni di default. Tuttavia, questo non basta a mettere sullo stesso piano un nuovo progetto e un progetto già esistente, perché larghissima parte delle funzioni fondamentali viene in realtà implementata tramite i template (infobox, citazioni, tabelle, eccetera).

Difficoltà per gli sviluppatori di software

Per coloro che sviluppano codice per MediaWiki o le sue estensioni, bot o altri mezzi per analizzare, generare o modificare contenuti nelle pagine wiki è difficile sviluppare caratteristiche che dipendono dalla presenza o meno di un determinato template in una wiki. Gli sviluppatori di estensioni come GrowthExperiments, PageTriage, ContentTranslation, alcune componenti di Wikibase e così via, hanno la necessità di testarle in ambiente di produzione (che è una pessima idea) o di importare i template necessari sulle proprie wiki o su una wiki di test.

I ricercatori che estraggono dati sui contenuti wiki basandosi sui template sono spesso costretti a scrivere uno script separato per ogni wiki, così che spesso e volentieri si limitano a un progetto solo. Un esempio abbastanza eclatante è l'utilizzo dei template di progetto su Wikipedia in inglese per analizzare gli argomenti delle voci e valutarne la qualità. {{🌎🌍🌏}}

Presupposti

Estensioni e template: similitudini e differenze

Uno dei principi di fondo di questa proposta è che template e moduli siano estremamente simili al codice di Mediawiki e delle sue estensioni. Parliamo, cioè, di un software che permette di implementare funzionalità che servono a una comunità di utenti - e questo è a maggior ragione vero per i template, che vengono sviluppati proprio dagli utenti in risposta alle proprie necessità. La differenza fra loro, tuttavia, è nel modo in cui vengono sviluppati, tradotti e implementati.

Template e moduli dovrebbero assomigliare di più alle estensioni per alcuni versi, mantenendo tuttavia determinate particolarità che al momento mancano alle estensioni. Facciamo qualche esempio:

Proprietà Mediawiki ed estensioni Template Cosa bisogna fare riguardo i template?
Inserire un tipo speciale di contenuto Sì.

(immagini, formule matematiche, geroglifici, spartiti, note)

Sì.

Chess diagram

└ Le tipologie speciali di contenuto sono facilmente inseribili in una voce o pagina Sì (se usi la toolbar). No (a meno che tu non sappia come fare). Bisogna trovare una soluzione.
└ Le tipologie speciali di contenuto sono facilmente visualizzabili su dispositivi mobili Sì, quantomeno nella maggior parte dei casi. A volte. Bisogna trovare una soluzione.
└ Le tipologie speciali di contenuto sono facilmente traducibili come parte di una voce o pagina Sì, quantomeno nella maggior parte dei casi. No. Bisogna trovare una soluzione.
Inserire un tipo speciale di formattazione Sì.

gallery, poem

Sì.

Image array, Columns, Quote, Navbox, Infobox

Implementare i processi di lavoro specifici di una comunità Sì.

(Filtro anti-abusi, check user, sposta)

Sì.

Admincheck, Proposed deletion

Dovrebbe essere reso più facile riutilizzarli, senza però forzare qualcuno ad adattarsi.
Versione iniziale facile da implementare No. Sì. Questa specificità andrebbe preservata.
Modifiche facili da implementare No. Sì. Questa specificità andrebbe preservata.
Facile da tradurre Sì. No. Bisogna trovare una soluzione.
Utile su più wiki Spesso. Spesso.
Utilizzabile solo su un numero limitato di wiki A volte.

Josa, TocTree

A volte.

New Zealand English, Units attention

Facile da installare e utilizzare su più wiki Sì. No. Bisogna trovare una soluzione.
Facile da utilizzare su una nuova wiki Sì. No. Bisogna trovare una soluzione.

Competenze nel creare template e moduli

Un'altra importante serie di considerazioni su cui si basa questa proposta è la seguente:

  • Saper sviluppare un template o un modulo non è banale, dal momento che entrambi hanno un sacco di funzionalità complesse.
  • Anche se molte delle funzionalità più importanti sono implementate tramite template e moduli, queste competenze sono spesso ignorate, sottovalutate o date per scontate.
  • Ci sono decine di utenti, sparsi per le varie wiki, che hanno queste abilità. Tuttavia, spesso si concentrano sulla propria wiki e comunicano relativamente poco con gli utenti di altre comunità o progetti. Anche se la tecnologia di base è la stessa ovunque, non c'è nessuna vera comunità globale di sviluppatori di template che sia paragonabile alla comunità globale di sviluppatori di MediaWiki. Esistono dei casi di collaborazione cross-wiki su alcuni template, ma sono pochissimi e poco coerenti fra loro.
  • Ci sono anche molte wiki in cui non ci sono utenti che posseggono queste abilità. Questi possono limitarsi a copiare template e moduli da altre wiki, senza però comprendere appieno come funzionino, oppure senza la possibilità di tradurli o mantenerli in modo efficace, oppure ancora potrebbero non usarli affatto.

Questa situazione è ben lontana dall'essere ottimale. Le competenze degli sviluppatori di template e moduli necessitano di essere maggiormente apprezzate, perché sviluppano funzionalità davvero necessarie che sono parte integrante delle loro comunità. In molte wiki di lingue diverse, gli sviluppatori di template inventano nuovi modi di strutturare, presentare e modularizzare dati e contenuti. Queste innovazioni potrebbero essere utili in tante wiki, ma non esiste ancora un meccanismo adeguato per raggiungere questo obiettivo.

E, naturalmente, qualsiasi soluzione a questi problemi non deve proporre tecnologie completamente nuove che mettano da parte anni di esperienza pratica acquisita dagli sviluppatori di template. Pertanto, bisognerà apportare il minor numero possibile di cambiamenti nella sintassi per lo sviluppo di template e moduli. Quello che deve cambiare è il modo in cui vengono distribuiti e riutilizzati fra le varie wiki e il modo in cui le stringhe di testo vengono tradotte. {{🌎🌍🌏}}

Una proposta di soluzione, in sintesi

Ci sono già molte funzioni di MediaWiki che sono globali:

Anche template e moduli dovrebbero, quindi, essere resi globali, gestendoli tramite un repository globale e traducendoli in modo simile a quello usato per le estensioni di MediaWiki.

Template e moduli globali permetterebbero agli sviluppatori di template in tutte le comunità di collaborare più facilmente allo sviluppo del codice.

Template e moduli globali permetterebbero ai traduttori di focalizzarsi sulla traduzione delle sole stringhe di interfaccia (i “messaggi”), senza doverle cercare nel codice e usando lo stesso metodo che si usa per tradurre le estensioni di MediaWiki.

Template e moduli globali permetterebbero agli utenti di tutte le wiki di scrivere e tradurre voci da altre versioni, senza dover essere costretti ad apprendere regole e competenze diverse in ogni altra wiki per poterne tradurre anche i template.

La sintassi di template e moduli e, più in generale, la loro manutenzione e gestione non cambieranno, quindi tutte le capacità acquisite lungo questi anni dagli utenti non diventeranno obsolete.

Tutti i progetti potranno utilizzare i template globali, ma non saranno costretti a farlo. Ciascuna comunità manterrà la possibilità di sovrascrivere qualsivoglia funzionalità, aspetto grafico, dato o altro, se necessario.

Tradurre i template sarà utile tanto quanto tradurre le estensioni MediaWiki. {{🌎🌍🌏}}

Una proposta di soluzione, più nel dettaglio

I template devono essere semantici e globali

Per semantico si intende che tutte le altre componenti di MediaWiki (e in particolare Visual Editor e Content Translation) dovranno avere modo di individuare un determinato template con determinate funzionalità, così da poterlo integrare in una traduzione come infobox, template di citazione o di manutenzione, eccetera, e non come un template generico. Al momento, la cosa che più si avvicina all'obiettivo è TemplateData, che però descrive soltanto i parametri dei template. Per esempio, non permette a Visual Editor di inserire un pulsante “Inserisci infobox” nella toolbar.

Per globale si intende che il codice di un template vada posto in un repository centralizzato, che permetta il suo riutilizzo in qualsiasi wiki.

Come rendere semantico un template

I template non sono mai stati fortemente semantici, nel senso che il software che elabora le pagine non è mai stato in grado di gestirli facilmente.

Tuttavia, esistono solo pochi esempi di template che sono stati resi semantici:

  • vari fra i template Cita, che sono utilizzabili tramite il pulsante “Cita” nella toolbar di Visual Editor (e che però richiedono che venga prima scritto e localizzato un sacco di codice per configurare Citoid);
  • il template “Citazione necessaria”, che è stato adattato per Visual Editor verso fine 2019 in alcune lingue (per esempio inglese, ebraico o sloveno), ma non in altre, nonostante quasi tutti i progetti abbiano un template del genere (vedi anche task T211243);
  • i template per menzionare gli utenti tramite Flow (anch'essa da configurare localmente);
  • alcuni tool utilizzati per compiere ricerche sui dump di Wikipedia oppure sui template di monitoraggio dei progetti di Wikipedia in inglese (spesso aggiunti nelle pagine di discussione);
  • l'estensione GrowthExperiments suggerisce agli utenti di operare determinate azioni sulle voci, in base ai template in esse contenuti (i cui nomi però devono essere inclusi in appositi file JSON su ogni wiki, come per esempio le Wikipedia in ceco, vietnamita, coreano o arabo);
  • l'estensione PageTriage, configurata per funzionare con i template di disambiguazione di Wikipedia in inglese.

In quest'ultimo caso, di fatto l'estensione codifica in modo rigido i template di un progetto, rendendoli inutilizzabili in un altro progetto senza una significativa riscrittura. Ma anche nei casi in cui la configurazione su wiki sia poca cosa, come per Flow, comunque serve configurare qualcosa. Questo non può funzionare in modo efficiente per tutti i 900 e oltre progetti Wikimedia attualmente esistenti e per le migliaia di futuribili progetti che verranno.

Queste funzioni dovrebbero essere globali di default, almeno nella loro configurazione di base, in modo che possano essere utilizzabili da subito da estensioni, bot, programmi per analizzare i dump, eccetera.

Dove conservare i template

I template e moduli globali potrebbero essere conservati in una wiki centralizzata (Meta, Commons o una nuova wiki apposita) oppure su un repository (come Gerrit o un altro).

La migliore soluzione potrebbe forse essere una wiki apposita, in modo tale che i template e i moduli non vengano confusi con le immagini, le discussioni generali della comunità, eccetera.

Usare Gerrit è tecnicamente fattibile, ma si perderebbe un importantissimo elemento di accessibilità per chi gestisce e cura i template: per la maggior parte degli utenti, modificare una pagina wiki è molto più semplice e immediato che fare un commit e aspettare una revisione del codice. Quindi Gerrit non dovrebbe diventare il metodo primario per raccogliere e conservare i template.

Inoltre, il repository dovrebbe permettere la modifica di template e moduli al maggior numero possibile di utenti. Le regole di protezione e i permessi speciali, almeno inizialmente, dovrebbero essere uguali a quelle di tutte le altre wiki: tutto dovrebbe essere aperto di default, ma dovrebbe essere altrettanto possibile proteggere i template più comuni, sensibili o frequentemente vandalizzati. Ulteriori regole e livelli di protezione possono essere discussi dalla comunità più in là.

Il codice dei template nel repository centrale utilizzerà il nome generico in inglese dei tag come <section>, funzioni parser come {{#ifexist}} e {{#invoke}} e magic words come {{DISPLAYTITLE}}.

Il modo in cui saranno richiamati i template nelle wiki di arrivo è una questione di infrastruttura e architettura, ma è importante affrontare anche tutti gli altri requisiti. Queste cose sono state già discusse in passato da altri sviluppatori, per esempio riguardo il cosiddetto nel progetto del “namespace ombra”. Questo documento tenta di chiarire, invece, come tutto questo possa funzionare per gli utenti che modificano una pagina che utilizza un template o per coloro che gestiscono quel template: come scriverlo in modo da poterlo localizzare in futuro, come tradurlo, come configurarlo localmente, eccetera. Questi aspetti non sono stati affrontati in maniera sufficiente nelle passate discussioni in materia.

I template devono restare modificabili facilmente

Un aspetto importante dei template è che funzionano come tutte le altre pagine di una wiki: questo significa che gli effetti di qualsiasi modifica si applicano direttamente, senza revisioni o distribuzioni di sorta. Sebbene questo costituisca un pericolo (un solo edit vandalico potrebbe rovinare tante pagine), la verità è che questo sistema funziona quasi sempre bene.

Per questo, questa comodità deve essere mantenuta: gli utenti che si occupano di template molto probabilmente si rifiuterebbero di passare a un nuovo sistema che richiederebbe loro di imparare tutta una nuova serie di cose e che li costringesse a passare attraverso un'estenuante fase di revisione e distribuzione. Questo probabilmente esclude la possibilità di usare Gerrit, nonostante il suo processo di revisione e implementazione sia molto più veloce rispetto a quello in atto per le estensioni.

Deve essere possibile non rendere globali alcuni template

Non tutti i template devono essere resi globali per forza.

In realtà, alcuni template andrebbero considerati “locali” perché servono a garantire delle funzionalità che sono uniche di un dato progetto o di una data lingua. Per loro stessa natura, tali template non devono essere tradotti e, anzi, dovrebbe esserci un modo per segnalare ai traduttori umani e ai tool di traduzione (come Content Translation) che quei template non necessitano di traduzione e che possono essere ignorati o sostituiti. Questa considerazione rientra nello sforzo di rendere i template più semantici.

Deve essere possibile sovrascrivere una funzionalità o la forma di un template globale

Nessuna comunità dovrebbe essere messa in condizione di pensare che una data funzionalità venga imposta da una qualche forza esterna più “potente”, come la comunità anglofona di Wikipedia, la comunità di Wikidata, la WMF o chissà chi. I template globali dovrebbero essere sviluppati e usati in modo collaborativo per il bene comune. La maggior parte delle volte questo dovrebbe funzionare per tutti.

In alcuni casi, alcune comunità potrebbero volere che un dato template abbia una certa funzionalità che funzioni in un dato modo, oppure che permetta di mostrare le informazioni in un dato modo, oppure ancora non volere una certa funzionalità. Questa capacità di prevalere localmente sulle funzioni comuni deve essere garantita (o, per meglio dire, non deve essere tolta) fin dall'inizio.

Un template globale deve essere immediatamente utilizzabile in ogni wiki

Così come una pagina utente globale è oggi disponibile in automatico in ogni wiki in cui non esiste una pagina utente locale, un template o un modulo creato tramite l'infrastruttura globale dovrà essere immediatamente utilizzabile in ogni wiki.

Questo significa che non devono esserci passaggi extra, come dover copia-incollare intere pagine wiki, creare dei template che traducano i parametri stranieri, richiedere l'intervento di un amministratore, aspettare ore e ore l'aggiornamento della cache, eccetera.

Una volta aggiornata la versione centralizzata, i cambiamenti verranno mostrati immediatamente ovunque. Per prevenire vandalismi, la comunità provvederà ad adottare linee guida sulla protezione delle pagine e sulla possibilità di modificarle.

Qualora le stringhe di interfaccia (o “messaggi”) non siano ancora tradotte, il template sarà comunque utilizzabile e le stringhe mostrate nella lingua di fallback (per maggiori dettagli, si rimanda al paragrafo sulla localizzazione).

Localizzazione delle stringhe rivolte all'utente

Deve essere possibile tradurre tutte le stringhe rivolte all'utente

Le stringhe di interfaccia (messaggi) di MediaWiki, delle sue estensioni e di alcuni tool (come Pageviews) sfruttano translatewiki.net per tradurre in modo veloce e semplice i messaggi di sistema. Questo processo di localizzazione è sufficientemente familiare per alcuni utenti in tutte le lingue.

Al momento, non è possibile fare la stessa cosa con i template. Siti multilingua come Commons o MediaWiki.org hanno il sistema “TNT” per tradurre alcuni template, ma si tratta di un sistema molto complesso e che non può essere riutilizzato anche su Wikipedia, Wikisource, eccetera. Nel 2021, questo è diventato più robusto grazie alla funzione “transclusione sensibile al linguaggio”, ma necessita ancora di alcuni miglioramenti.

In teoria, dovrebbe essere possibile tradurre i template così come si traducono i messaggi di sistema, ossia usando una wiki dove è attiva l'estensione Translate.

La stringa tradotta dovrà essere utilizzabile subito dopo averla tradotta tramite l'interfaccia di traduzione.

Potrebbe essere possibile modificare le stringhe anche dalla pagina, ma in generale dovrebbe essere preferibile farlo attraverso un'interfaccia di traduzione.

I traduttori dovrebbero essere in grado di concentrarsi esclusivamente sulla traduzione del testo. La presenza di codice rende più difficile contribuire a coloro che non hanno esperienza di programmazione o con i file JSON. Inoltre, modificare le traduzioni in lingue scritte da destra a sinistra in file di testo non elaborati è estremamente scomodo. L'estensione Translate risolve già tutti questi problemi.

Allo stesso modo, anche le pagine di documentazione dei template devono essere traducibili. Potrebbe bastare l'attuale estensione Translate per farlo, ma non si può escludere che servirà fare qualche piccolo adattamento.

In quale lingua mostrare le stringhe all'utente?

I template sono utilizzati perlopiù all'interno delle voci o delle pagine, quindi dovrebbe essere possibile mostrare di default i messaggi e i parametri nella lingua propria del progetto.

Alcuni template, tuttavia, sono utilizzati come elementi dell'interfaccia utente. Potrebbe essere, quindi, necessario anche permettere di mostrare messaggi e stringhe nella lingua preferita dall'utente, laddove sia differente da quella del progetto. Questo potrebbe essere ancora più importante in siti multilingua come Commons, Wikidata, Meta e Mediawiki.org.

Laddove non esista una traduzione, dovrebbe essere in generale utilizzata la normale catena di fallback di MediaWiki (per esempio, l'italiano per le versioni in veneto, lombardo o napoletano, lo spagnolo per le versioni in quechua o guaraní, il russo per quelle in baschiro o ciuvascio e così via). Nel caso in cui non sia prevista alcuna lingua di fallback o il messaggio non sia tradotto nella lingua prevista, l'ultima lingua di fallback è l'inglese.

Messaggi fondamentali

Ogni messaggio dovrebbe essere rappresentato come “chiave”, similmente a quanto accade oggi per i messaggi di MediaWiki, delle estensioni e dei tool.

Scrivere stringhe traducibili sarà probabilmente il cambio maggiore da affrontare nel processo di sviluppo dei template. Le stringhe fisse dovranno essere gestite separatamente e spostate nei messaggi, organizzati per chiave. Questo processo deve essere reso il più semplice possibile, sia per i traduttori, sia per chi effettivamente scrive i template, altrimenti nessuno di loro accetterà di usare queste funzioni e, anzi, rifiuteranno di farlo.

Per fare in modo che le chiavi siano uniche globalmente, si potrebbe inserire automaticamente il nome globale del template nella chiave del messaggio.

Tool di transizione

Per rendere più semplice la transizione verso template o moduli globali, si potrebbe sviluppare un tool che compia indicativamente i seguenti passaggi:

  1. esportare il template da una wiki e importarlo nella wiki globale;
  2. esportare a cascata tutti gli eventuali template aggiuntivi utilizzati dal primo template;
  3. identificare le stringhe, convertirle in una lista di chiavi e contemporaneamente sostituire all'interno del codice le stringhe con le chiavi corrispondenti;
  4. importare la documentazione e il TemplateData relativi al template;
  5. importare le pagine CSS necessarie.

In molti casi, questo processo automatizzato non basterà a creare un modulo o template pienamente utilizzabile da subito, ma almeno aiuterebbe molto nel processo di transizione.

Organizzare i messaggi

L'estensione Translate organizza i messaggi per gruppi (anche detti “progetti”), i quali a loro volta sono suddivisibili in sotto-gruppi: per esempio, “Article Placeholder”, “Score” e “Poem” sono tutti sotto-gruppi che si riferiscono alle estensioni corrispondenti di MediaWiki e che sono tutti inclusi nel gruppo “Estensioni usate da Wikimedia - Avanzate”, assieme a tante altre estensioni.

I progetti che riguardano le estensioni di MediaWiki sono configurati tramite appositi file YAML su Translatewiki.org e mostrati attraverso l'interfaccia di traduzione, che permette di selezionare un determinato gruppo di messaggi relativi a un determinato progetto.

Siccome ci sono molti più template che estensioni, potrebbe essere necessario apportare delle modifiche al sistema con cui l'estensione Translate gestisce attualmente i gruppi di messaggi, per poterlo adattare anche alla traduzione di template.

Ogni template dovrebbe costituire un gruppo di messaggi a sé. Template simili fra loro dovrebbero poi essere aggregati in macro-gruppi, un po' come succede oggi con le categorie (anzi, si potrebbe ricopiare in parte l'attuale sistema di categorie). Utilizzare un repository Git per organizzare questi messaggi è probabilmente una soluzione non efficiente, perché troppo complessa e lenta.

Sarebbe carino mostrare nomi di template e gruppi nella lingua preferita dall'utente, ma andrebbe bene ugualmente mostrare la versione in inglese. Quello che va bene ai traduttori delle estensioni, andrà bene anche ai traduttori dei template.

I template devono essere mostrati come gruppi di messaggi sulla pagina speciale dedicata alle statistiche (Special:LanguageStats) dell'estensione Translate. Questo aiuterà i traduttori a capire quali siano i template che necessitano di essere tradotti. Teoricamente, questa cosa dovrebbe funzionare come qualsiasi gruppo di messaggi, ma ci sono delle considerazioni aggiuntive da fare:

  • Ci saranno migliaia di template, quindi sarebbe bene che il design della tabella sia più o meno corrispondente.
  • La tabella dovrebbe mostrare su quante voci o pagine ciascun template è utilizzato, rendendo possibile ordinare le righe per questo parametro, in modo da poter capire quali template siano prioritari nella traduzione.

Capire come tradurre un template

Ogni manuale di template deve avere un link diretto all'interfaccia di traduzione nella lingua dell'utente.

Alcuni template utilizzano le etichette di Wikidata, anziché delle stringhe, come parte della loro interfaccia. Questo avviene, per esempio, con il Wikidata Infobox su Commons, la Infotaula persona (Infobox persona) su Wikipedia in catalano e molti altri template. Etichette e valori possono essere tradotte direttamente su Wikidata. Ovviamente, questi esempi non coprono la totalità delle necessità di traduzione dei template, ma sono legittimi e utili per scopi particolari. Fintanto che questa caratteristica sia descritta correttamente nella documentazione del template, può tranquillamente continuare a essere usata e probabilmente non necessita di appositi cambiamenti all'infrastruttura. (Forse la traduzione delle etichette e dei valori rilevanti può essere in qualche modo integrata nell'interfaccia Translate, ma questo è facoltativo.)

Parametri e “parole magiche” dei messaggi

Molti messaggi di MediaWiki e delle sue estensioni usano dei parametri (talvolta chiamati anche “segnaposto” o “placeholder”), indicati come “$1”, “$2”, “$3”, eccetera e riempiti nel tempo di esecuzione. I parametri sono particolarmente importanti per facilitare la traduzione dei messaggi, perché lingue diverse hanno un ordine delle parole diverso.

Una funzione del genere servirà anche per i template globali - non necessariamente in forma “$1” o “$2”, si potrebbe adottare anche una forma più simile a quella dei template, ossia con le triple parentesi graffe ({{{}}}). Questo aspetto va deciso dopo aver considerato anche le necessità relative al parsing e alla localizzazione.

Tuttavia, le “parole magiche” PLURAL, GENDER e GRAMMAR devono essere supportate anche per i messaggi dei template, così come lo sono per i messaggi di MediaWiki.

Documentazione dei messaggi

I messaggi traducibili di MediaWiki e delle estensioni hanno la possibilità di essere documentati, per la comodità di sviluppatori e traduttori. La documentazione include informazioni su dove appaiano i messaggi, spiegazioni sui parametri, se il parametro è un verbo o un aggettivo, eccetera. Questa documentazione è memorizzata come uno pseudo-linguaggio con il codice “qqq”.

Una documentazione del genere sarebbe utile anche per i template. Come memorizzarla rimane un problema di architettura tecnica. Forse si potrebbe utilizzare TemplateData, forse si potrebbe utilizzare il codice qqq, forse si potrebbe adottare un'altra soluzione.

Lingua originale

I template che saranno importati sulla piattaforma globale non proverranno solo dai progetti in lingua inglese, ma anche da progetti in altre lingue. A maggior ragione, i tool di traduzione e localizzazione devono supportare la traduzione da e verso ogni lingua e non solo da e verso l'inglese.

Messaggi obsoleti

Qualora un messaggio di MediaWiki o di un'estensione venga aggiornato nella sua versione inglese, il messaggio viene automaticamente marcato come obsoleto, tramite un'evidenziazione in rosa. La traduzione, laddove presente, continua a funzionare, ma viene mostrato ai traduttori come “da aggiornare” (anche se il responsabile della traduzione può anche contrassegnarlo come “non da aggiornare”).

Un meccanismo simile sarà necessario per la localizzazione dei template. Tuttavia, siccome sarebbe bene non costringere gli utenti ad adottare l'inglese come lingua di partenza, ci dovrebbero essere altri metodi di segnalare i messaggi come da aggiornare.

Considerazioni sulla traduzione dei moduli

I moduli Lua possono caricare e analizzare le stringhe traducibili di MediaWiki, ma non c'è un modo ben definito per centralizzare queste stringhe per quei moduli Lua ospitati sulle pagine wiki. Si potrebbe impacchettare i moduli Lua come parti di estensioni, per permettere loro di caricare i messaggi dai rispettivi file i18/*.json, ma questo avviene in pochissimi casi. Riscrivere da capo i template in Lua potrebbe essere una soluzione più sostenibile sul lungo periodo, anche da un punto di vista tecnico, ma non necessariamente tutti gli utenti potrebbero voler utilizzare Lua - e la cooperazione di questi utenti è cruciale per il successo del progetto, quindi questa soluzione non può essere applicata a tutti i template.

Alcuni moduli tecnici e molto specifici che vengono comunemente utilizzati, raramente modificati e che non richiedono internazionalizzazione (come, per esempio, No globals e Arguments) possono probabilmente essere spostati senza grossi problemi all'interno dell'estensione Scribunto.

Tradurre il nome del template

Un template può avere un nome diverso per ogni lingua, ma deve comunque essere connesso a un repository centrale.

I template e i moduli globali dovrebbero essere immediatamente utilizzabili in tutti le wiki senza passaggi aggiuntivi, quindi deve essere possibile utilizzare un template globale in una pagina wiki locale usando il suo nome globale. La comunità wikimediana nel suo complesso deciderà le linee guida su questi nomi globali.

Come per i parametri, anche i template possono avere nomi differenti a seconda della lingua. Questa è una caratteristica che deve essere mantenuta e dovrà essere individuato un modo per tradurre il nome dei template. Forse Wikidata potrebbe avere un ruolo in questo, ma non necessariamente.

Se questo non viene garantito, gli utenti eviteranno di usare i template globali, li ingloberanno all'interno di template locali o utilizzeranno altre soluzioni che comunque interromperanno il contatto con il template globale. Questo non solo non è desiderabile, ma è completamente l'opposto di quanto si prefigge questo progetto.

I nomi dei template devono essere tradotti esclusivamente in lingue a cui corrisponde un progetto wiki. Traduzioni in tedesco formale o inglese britannico sono probabilmente inutili e, comunque, ci dovrebbe essere un modo di sfruttare alias e redirect. Le varianti di una lingua, come per il serbo o il cinese, vanno invece gestite coerentemente con le necessità di quella comunità linguistica.

Se esistesse un template locale con lo stesso nome (tradotto o meno) di un template globale, la priorità verrà data al template locale. Questo funzionamento è simile a quello che accade con i file di Commons o con i messaggi locali di MediaWiki: il contenuto locale sovrascrive sempre quello globale.

Anche i nomi dei moduli lua sono spesso tradotti. I loro nomi possono essere tradotti per richiamarli direttamente nei template, ma siccome spesso si utilizza l'inglese, dovrebbe essere data priorità ai nomi globali all'interno del codice, per esempio nelle dichiarazioni require.

Traduzione dei parametri

Traduzione dei nomi dei parametri

I nomi dei parametri sono differenti in ogni lingua. Solitamente, si basano sulle parole corrispettive nelle differenti lingue, quindi è importante tenere quest'aspetto in considerazione per modificare comodamente la trasclusione nella sintassi wiki.

In teoria, un template globale dovrebbe avere dei nomi generici per i parametri per permetterne la traduzione in differenti lingue. Questo è, in un certo senso, alle etichette delle proprietà di Wikidata, ma si potrebbe rendere ancora più semplice: dal momento che l'inglese è una lingua franca per gli sviluppatori di software e che i template sono una sorta di software, si potrebbe utilizzare l'inglese come lingua di default al posto di numeri generici (come succede in Wikidata).

I nomi generici dei parametri sarebbero i nomi comuni di default, che funzionerebbero in tutte le lingue. I nomi tradotti in locale funzionerebbero, invece, solo nelle versioni che adottano quella particolare lingua come principale o fallback.

Le traduzioni dei parametri comunque vanno validate, per cui:

  • non devono contenere caratteri non validi;
  • non devono essere ripetuti all'interno dello stesso template;
  • ...altro?

Il processo di traduzione dei nomi dei parametri potrebbe, alla fine, risultare diverso da quello delle stringhe di interfaccia. I primi hanno dei vincoli tecnici che devono essere applicati. In altre parole, cambiare il nome a un parametro potrebbe causare problemi alle inclusioni esistenti, quindi dovrebbero esserci dei meccanismi di salvaguardia in proposito.

Traduzione automatica dei parametri

Se tutte le traduzioni dei template e dei rispettivi parametri venissero gestite centralmente, sarebbe possibile avere una funzionalità semplice che permetta di richiamare un template già tradotto e perfettamente utilizzabile. Per esempio:

Input:

{
	sourcewiki: "enwiki",
	targetwiki: "frwiki",
	template: "{{Infobox writer|name=Ľudovít Štúr|birth_date=1815-10-28}}"
}

Output:

{
	template: "{{Infobox Écrivain|nom=Ľudovít Štúr|date de naissance=1815-10-28}}"
}

Questo sarà il modo principale per adattare i template tramite Content Translation. A differenza dell'attuale metodo per adattare i template, questo sarà preciso e completo, anziché basato su approssimazioni.

Con il Visual editor o con la wikisintassi introdotta nel 2017, copiare e incollare un template da una wiki in un altra lingua permette di effettuare la traduzione dei parametri automaticamente.

Dovrebbe tuttavia esistere un modo semplice di realizzare questo anche per chi usa la wikisintassi normale - per esempio, utilizzando una pagina speciale o un box di dialogo dove un utente può incollare il template e selezionare la lingua di origine, ottenendo un template con i parametri tradotti nella sua lingua.

In entrambi i casi, sarebbero tradotti solo il nome del template e dei parametri. La traduzione dei valori dei parametri è discussa in un'altra parte del documento.

Parametri senza nome

I parametri numerici e senza nome di un template devono, ovviamente, continuare a funzionare.

Tuttavia, bisognerà affrontare il problema di come localizzare questo tipo di parametri.

Tradurre i valori dei parametri

Oltre a rendere condivise le funzionalità e il design dei template, bisogna pensare alla possibilità di rendere anche i valori dei parametri condivisi - o non condivisi.

Alcuni valori sono gli stessi in tutte le lingue per loro stessa natura, come per esempio la pronuncia fonetica di un dato posto (per esempio, [dɛn ˈɦaːx] per L'Aia), l'anno di fondazione di una città, la formula chimica di un composto, eccetera. Almeno questi dovrebbero direttamente essere inseriti in Wikidata e da lì richiamabili all'interno del template.

Altri parametri, invece, dovranno essere tradotti o anche traslitterati, come per esempio i nomi propri di persone o di cose, i motti degli Stati, eccetera.

I template globali dovrebbero rendere tutto questo possibile, ma bisogna anche ricordarsi che è ancora pratica comune copiare e incollare queste informazioni da una wiki all'altra.

Alcun parametri possono essere facilmente tradotti o localizzati in modo automatico e l'infrastruttura dei template globali deve poter supportare questa funzionalità. Per esempio, numeri e cifre sono lievemente differenti rispetto ai nostri in birmano, in varie lingue dell'India e in altre lingue, ma questa cosa potrebbe essere tranquillamente gestita dal software.

I valori validi e funzionali dei parametri devono essere riutilizzabili in più lingue e non devono appoggiarsi esclusivamente a una sola. Per esempio, usare “yes” o “no” come valori booleani è troppo anglo-centrico: un cambio del genere probabilmente non richiederà cambiamenti nell'infrastruttura, ma quasi certamente sarà necessario un accordo nella comunità globale di sviluppatori di template su come fare in modo che un template sia funzionale in più lingue.

Direzione del testo

I template devono essere adattati alla direzione del testo (da sinistra verso destra o da destra verso sinistra) della wiki su cui vengono utilizzati.

Per questo, un template deve essere realizzato utilizzando gli allineamenti di testo a sinistra o a destra il meno possibile.

Bot

Molti template in molte wiki sono regolarmente modificati da bot. Questa possibilità deve essere mantenuta.

Questo non dovrebbe richiedere alcun cambio nell'infrastruttura attuale del software, ma viene comunque citato perché è un caso di utilizzo molto importante.

Transizione dei template dalle wiki più grandi al repository centrale

La lingua più utilizzata come base per le traduzioni tramite Content Translation è, di gran lunga, l'inglese, seguita dallo spagnolo, dal russo, dal francese, dal tedesco, dal catalano, dall'ucraino, dal cinese e dal portoghese. Per questo, ha senso che i template più comuni di queste comunità linguistiche (e in particolare quelli della versione inglese) siano quelli che più di tutti devono essere resi globali, per il bene di tutte le altre comunità.

Paradossalmente, gli utenti di queste comunità più grandi sono anche quelli meno interessati a raggiungere quest'obiettivo:

  • perché il template funziona bene per loro, quindi non c'è un motivo apparente per sforzarsi di rendere più facile la traduzione in altre lingue;
  • perché rifare da capo un template per renderne più facile la traduzione potrebbe richiedere molto tempo e potrebbe costringerli a doversi caricare nuove o differenti responsabilità nella manutenzione;
  • perché ampliare il numero di progetti che usano un determinato template potrebbe rendere più difficile in futuro raggiungere un consenso su delle eventuali modifiche necessarie;
  • perché gli utenti delle principali wiki potrebbero essere costretti a unire un template già esistente e uno da importare che hanno funzionalità uguali o simili.

Più che una considerazione tecnica, si tratta di una considerazione pratica e rivolta alle relazioni fra le comunità. Tuttavia, anche questi aspetti vanno presi in considerazione quando si prendono decisioni che hanno un impatto sull'architettura tecnica di un sito. Se non lo si facesse, l'intero progetto fallirebbe miseramente.

Finché esisteranno template comuni importanti ma non ancora globali, Content Translation e le altre estensioni dovranno comunque continuare a supportarli. Se l'infrastruttura per i template globali venisse creata e la migrazione dei template avvenisse con un ritmo sostenuto, allora gli sviluppatori potrebbero considerare di interrompere il supporto (e magari, un giorno, deprecare il codice) per alcuni template non globali.

Il ritmo di migrazione dei template dalle wiki maggiori verso il repository centrale potrebbe essere uno dei parametri per misurare la buona riuscita del progetto.

Deve essere possibile utilizzare i template sia con la sintassi wiki, sia con Visual Editor

Questo è un concetto ovvio, ma lo si ribadisce ugualmente: la possibilità di modificare una pagina in formato wikitesto rimane, così come la possibilità di modificare un template così come si è fatto finora. Semplicemente, questa modalità non deve diventare più complessa di com'è attualmente.

Tuttavia, Visual Editor viene utilizzato sempre più da utenti nuovi e vecchi, quindi ogni template deve funzionare (e funzionare bene) sia in modalità wikitesto, sia con Visual Editor.

Altre funzionalità relative ai template

Esistono delle funzionalità extra di MediaWiki e delle sue estensioni che riguardano i template e che devono continuare a funzionare nell'era dei template globali (richiedendo, forse, qualche aggiustamento).

MediaWiki

Dovrebbero esserci strumenti su ogni wiki per mostrare - almeno - l'analisi di base dell'uso dei template e dei moduli sulle varie pagine: in altri termini, il numero di inclusioni e invocazioni raggruppate per wiki e gli elenchi di pagine che utilizzano template e moduli. La funzione che mostra quali modelli sono richiamati da una pagina mentre viene modificata deve continuare a funzionare anche con i template globali.

Stesso discorso vale per le pagine “Puntano qui”, che anzi sono utilissime anche per le trasclusioni globali.

TemplateData

  • È possibile tradurre le descrizioni dei template e dei parametri in TemplateData e visualizzare le traduzioni nella lingua scelta dall'utente nella finestra di dialogo apposita di VisualEditor. Questa è una buona funzione che va preservata. L'interfaccia può essere ovviamente migliorata, ma almeno si parte da una buona base. L'aggiunta di un supporto per TemplateData nell'estensione Translate può essere una potenziale soluzione, ma non necessariamente l'unica.
  • I parametri de Formattazione wikitesto consigliata (In linea, Blocco, Personalizzato) devono continuare a funzionare. Allo stesso modo, dovrebbe essere possibile per le singole wiki personalizzare questi parametri - per esempio, alcuni progetti potrebbero preferire vedere scritto il template su un'unica riga, altri potrebbero preferire vederlo scritto su più righe.

Citoid

  • Citoid va configurato su ogni wiki attraverso dei file JSON, come per esempio Citoid-template-type-map.json. Nell'era dei template globali, dovrebbe diventare possibile condividere anche questi file, in modo che il pulsante “Cita” diventi disponibile su tutte le wiki e funzionare allo stesso modo dappertutto di default. Come per i template, si deve comunque identificare un modo per aggirare la misura di default, casomai la comunità locale decida di voler operare altrimenti.

TemplateStyles

  • Deve esserci la possibilità di realizzare delle sottopagine per gli stili di un template all'interno dello stesso repository dei template, che possano essere richiamabili automaticamente di default ed eventualmente sovrascribili in locale.

TemplateSandbox

  • Special:TemplateSandbox deve continuare a funzionare.
  • Deve essere possibile modificare un template nel repository centrale e vedere in anteprima l'effetto delle modifiche su una determinata pagina di una determinata wiki.

TemplateWizard

  • L'attuale sistema di ricerca si basa sul motore di ricerca wiki. La lista dei risultati dovrà in futuro essere adeguata, per mostrare se il template è locale o globale.
  • TemplateWizard prende le informazioni sui template dalla API di TemplateData, quindi finché si continua a mantenere questa struttura, non dovrebbero esserci problemi. Inoltre, la localizzazione già funziona.

Wikibase

  • Wikidata può essere utilizzato per richiamare alcuni valori dal repository centrale alle wiki. Wikidata è già proficuamente utilizzata su varie versioni linguistiche di Wikipedia (come quella francese, ebraica, italiana, basca, russa, catalana, estone, eccetera) e su Commons, anche se l'implementazione varia da caso a caso. Questa funzione deve continuare a funzionare, ovviamente. Unificare il modo in cui i template richiamano determinati valori da Wikidata potrebbe essere una delle aree di maggiore impatto di questo progetto.
  • Questo potrebbe rendere più semplice l'integrazione di Wikidata Bridge, il progetto che permetterebbe di editare i dati su Wikidata tramite i template locali. Le modifiche ai template stessi sarebbero quindi effettuate solo una volta sul template locale e non su ciascuna wiki.

VisualEditor

  • Ovviamente, VisualEditor deve essere in grado di inserire sia i template globali, sia i template locali.
  • VisualEditor mostra un link alla pagina di descrizione del template nella schermata di dialogo. Questo link deve puntare ovviamente al template globale, quando usato.

Sviluppo

Lo sviluppo dell'infrastruttura necessaria per template e moduli globali è un progetto arduo e complesso, che va necessariamente diviso in parti più gestibili perché possa essere realizzato. A grandi linee, la scaletta in cui suddividere e realizzare il progetto è più o meno questa:

  1. Moduli traducibili (in fase di sviluppo): prima di rendere globali i moduli, bisogna innanzitutto creare un'infrastruttura per tradurli e localizzarli. Questo sarebbe di immediato aiuto soprattutto per i progetti che sono già multilingue, come Wikimedia Commons e Wikidata. Alcuni di essi vengono tradotti utilizzando i array Lua o trucchi con pagine traducibili, ma questo non è un sistema di localizzazione a tutti gli effetti.
  2. Moduli globali: i moduli diventano condivisi fra tutte le wiki. Questo dovrebbe avvenire prima di rendere i template globali, perché l'infrastruttura base dei moduli è più indipendente rispetto al nucleo di MediaWiki.
  3. Template traducibili: questo passaggio è simile a quello dei moduli traducibili e potrebbe sfruttare larga parte di quella struttura; tuttavia, ci sarà bisogno anche di tradurre i nomi dei template, dei loro parametri e forse anche qualche altra funzione (vedi le sezioni sulla localizzazione per maggiori informazioni).
  4. Template globali: l'ultimo passo per completare il progetto è rendere i template condivisi fra tutte le wiki.

Lo sviluppo di funzioni più avanzate, come rendere un template semantico, può e deve arrivare dopo la possibilità di renderli condivisibili. Se le due fasi fossero invertite, il codice che descrive semanticamente i template dovrebbe essere forkato su ogni singola wiki (più o meno come i template stessi), rendendo il codice più difficile da riutilizzare di come non sia già adesso.

L'accesso a template e moduli globali sarà disponibile per tutti i progetti Wikimedia. Ciò include tutte le versioni linguistiche di Wikipedia, Wikizionario, Wikivoyage, eccetera, nonché Wikimedia Commons, Wikidata, Meta, mediawiki.org, Wikitech, eccetera, nonché le wiki di prova (test.wikipedia.org, eccetera), come già avviene per le immagini da Wikimedia Commons. Anche se template e moduli globali saranno disponibili per tutti i progetti, questi non saranno obbligati a usarli.

Rendere i template riutilizzabili anche su progetti non Wikimedia potrebbe essere una buona idea. Potrebbe avere senso rendere i template riutilizzabili più facilmente non solo per i progetti Wikimedia, ma anche per altri siti basati su MediaWiki - anche se questo non porta direttamente benefici ai progetti Wikimedia. Questo sicuramente richiederà del lavoro aggiuntivo, ma potrebbe contribuire a migliorare la modularizzazione e, quindi, essere di beneficio anche per noi. Una funzionalità del genere sarebbe molto simile alla possibilità per i siti non Wikimedia di richiamare le immagini da Wikimedia Commons. {{🌎🌍🌏}}

Immagina un mondo

Immagina un mondo in cui ogni singolo essere umano possa condividere la somma della conoscenza umana - e in cui sia semplicissimo farlo perché i template sono diventati globali.

Attività Situazione attuale Con i template globali
Inserire un infobox tramite Visual Editor
  1. Vai su “Inserisci”.
  2. Clicca su “Template”.
  3. Trova in qualche modo il nome del template.
  4. Inserisci il nome del template.
  5. Compila i vari campi.

Ricordati che devi trovare il nome del template in ogni wiki separatamente (e che certe volte questo potrebbe rivelarsi molto difficile o impossibile).

  1. Vai su “Inserisci”.
  2. Clicca su “Infobox”.
  3. Seleziona l'infobox che ti serve.
  4. Ottieni automaticamente tutti i campi già compilati tramite Wikidata ed eventualmente aggiungi quello che manca o che deve essere sovrascritto localmente.

Ricordati che questo sarà il funzionamento di default (eccetto dove è presente un'eccezione) di tutte le wiki in tutte le lingue.

Inserire un infobox tramite wikitesto
  1. Modalità completamente manuale: trova il manuale del template e segui le istruzioni per compilare il template nell'editor.
  2. Modalità semi-manuale: copia il template che ti serve da un'altra voce e correggi i parametri.
  3. Usa TemplateWizard (ovviamente, se l'estensione è configurata sulla tua wiki):
    1. Clicca sul pulsante a forma di pezzo di puzzle.
    2. Trova in qualche modo il nome del template.
    3. Inserisci il nome del template.
    4. Inserisci i valori uno a uno utilizzando il modulo.
Se vuoi, puoi tranquillamente utilizzare uno dei metodi attualmente in uso.

Ma potrai sfruttare, se vuoi, anche queste funzionalità aggiuntive:

  1. selezionare un infobox da una lista di template suggeriti, anziché scriverlo a mano;
  2. avere i valori dei parametri già compilati automaticamente;
  3. poter sfruttare un procedimento simile per tutte le wiki.
Usare anche sulla tua wiki quel template che hai visto su un altro progetto
  1. Se hai il tempo e le capacità necessarie:
    1. Copia e incolla il codice del template sulla tua wiki. Se il template è molto complesso, utilizza la funzione di esportazione/importazione.
    2. Copia e incolla tutti i moduli lua alla base del template, se necessario.
    3. Copia anche il CSS del template, se necessario.
    4. Copia e traduci il manuale del template in wikisintassi.
    5. Controlla tutto il wikitesto che hai copiato, trova tutte le stringhe di interfaccia che devono essere tradotte e poi traducile.
    6. Controlla tutto il wikitesto che hai copiato, trova tutti i parametri, comprendi come devono essere usati e traducili nella tua lingua.
    7. Controlla che il template funzioni davvero e faccia ciò che ti serve. In caso contrario, controlla le pagine CSS o JS che servono a farlo funzionare.
  2. Se non hai il tempo o le capacità necessarie, hai due opzioni:
    1. realizzare un template più semplice e con meno funzionalità;
    2. semplicemente lasciar perdere.
  3. Ripeti questo processo per ogni wiki esistente.
Se il template è presente nel repository globale:
  1. Vai al manuale del template.
  2. Clicca su “Traduci” e poi traduci tutti i messaggi, tramite una interfaccia simile a quella di Translatewiki.org.

Fatto! Il template è già utilizzabile nella tua lingua!

(sì, è vero, questo deve essere ripetuto per ogni lingua, ma questo è quello che succede anche con tutte le estensioni di MediaWiki)

Usare anche sulla tua wiki quella funzionalità nuova di quel template che hai visto su un altro progetto Hai tre opzioni:
  1. ripetere il processo di esportazione del template, sperando che non succeda niente di male lungo il processo;
  2. sviluppare le modifiche necessarie da solo;
  3. lasciar perdere e accontentarti della versione vecchia.
Traduci le nuove stringhe. Tutte le nuove funzionalità sono già disponibili su tutte le wiki.
Implementare Wikidata Bridge (modificare i dati su Wikidata direttamente dagli infobox) Questo è un progetto ancora a un primissimo stadio di sviluppo. Tuttavia, si può già dire probabilmente che, stante l'attuale situazione, la sua implementazione richiederà probabilmente la modifica di ogni infobox su tutte le wiki, secondo le istruzioni che verranno pubblicate dagli sviluppatori di Wikidata. Il codice degli infobox dovrà essere cambiato una sola volta e funzionerà per tutte le wiki.
Tradurre nella tua lingua una voce o una pagina di un altro progetto tramite Content Translation
  1. Apri la voce con Content Translation.
  2. Clicca sull'infobox.
    1. se qualcuno ha già importato quell'infobox nella tua lingua, compila i parametri (certe volte i parametri sono già compilati di loro, ma spesso non lo sono);
    2. se nessuno ha importato quell'infobox nella tua lingua, saltalo a piè pari.
  3. Traduci il primo paragrafo della voce.
  4. Controlla con molta attenzione se i seguenti template sono stati eventualmente importati e adattati:
    1. template di pronuncia fonetica;
    2. template per il nome in lingua nativa;
    3. Citazione necessaria;
    4. Conversione unità;
    5. Citazione;
    6. Bandiere;
    7. vari altri template.
  5. Ripeti i passaggi 3 e 4 finché non avrai tradotto tutto.
  6. Pubblica la voce.
  7. Correggi tutti gli errori in wikitesto.

In questo scenario, i passaggi 4 e 7 possono prendere più tempo del passaggio 3.

  1. Apri la voce con Content Translation.
  2. Clicca sull'infobox. L'infobox viene adattato e i valori dei parametri compilati automaticamente. Correggi eventualmente i valori.
  3. Traduci il primo paragrafo della voce.
  4. Tutti i template sono automaticamente adattati con i parametri corretti - ma dagli un'occhiata comunque, non si sa mai.
  5. Ripeti i passaggi 3 e 4 finché non avrai tradotto tutto.
  6. Pubblica la voce.
  7. (sistemare eventuali errori nel wikitesto probabilmente non servirà)

In questo scenario, il passaggio 3 porta via la maggior parte del tempo, mentre i passaggi 4 e 7 sono brevissimi. In più, il tempo impiegato totale è minore.

Copiare una citazione di un'autorevole pubblicazione accademica da un progetto all'altro
  1. Controlla che esista un template corrispondente nella tua lingua. Se sì:
    1. Controlla che il tuo template di arrivo abbia i parametri con gli stessi nomi del template di partenza. Se sì, sei fortunato! Copia, incolla e può bastare così.
    2. Se non hanno gli stessi nomi, controlla i nomi dei parametri corrispondenti nella tua lingua e adattali uno per uno.
  2. Se nella tua wiki non esiste il template che ti serve, hai le seguenti opzioni:
    1. crearlo da zero (come nello scenario “Usare anche sulla tua wiki quel template che hai visto su un altro progetto”);
    2. usare un template per le citazioni simile a quello di partenza;
    3. copiare e incollare solo il testo della citazione, senza la formattazione e la struttura;
    4. semplicemente lasciar perdere e pubblicare la voce senza la nota.
Con il Visual Editor: copia e incolla, senza preoccuparti se funzionerà o meno.

Con il wikitesto:

  1. Copia.
  2. Incolla il template nel tool di conversione dei parametri, che li tradurrà nella lingua d'arrivo.
  3. Incolla il risultato nella pagina.

(Con la versione 2017 della sintassi wiki, il tool di conversione potrebbe essere direttamente integrato nel passaggio in cui si incolla il testo)

Mostrare una tabella sulla tua wiki con gli ultimi risultati del Tour de France in corso

(Questo scenario si basa su un modulo già esistente e usato, che si chiama Cycling race)

  1. Da fare una volta sola: sviluppare un template e un modulo che costruiscano una tabella di risultati e scrivere la documentazione per poterne permettere la copia e la traduzione in altre lingue.
  2. In ogni lingua (opzionale): tradurre le stringhe dell'interfaccia del modulo, intervenendo sul codice Lua.
  3. In ogni lingua (opzionale): tradurre le etichette degli elementi Wikidata necessari.
  4. In ogni wiki: copiare il modulo sulla wiki di arrivo.
  5. In ogni wiki (costantemente): aggiornare il modulo ogni volta che viene modificata la versione originale.
  6. In ogni wiki: creare una voce relativa all'edizione di quest'anno e inserire il template che richiama il modulo.
  7. Da fare una volta sola: aspettare che la tappa finisca e aggiungere i risultati nell'elemento apposito su Wikidata (in modo che tutte le voci che lo richiamano ottengano i risultati).
  1. Da fare una volta sola: sviluppare un template e un modulo che costruiscano una tabella di risultati. Il template è già disponibile su tutte le wiki.
  2. In ogni lingua (opzionale): cliccare sul pulsante “traduci” e tradurre tutti i messaggi necessari attraverso un'interfaccia simile a Translatewiki (e non intervenendo sul codice).
  3. In ogni lingua (opzionale): tradurre le etichette degli elementi Wikidata necessari.
  4. In ogni wiki: creare una voce relativa all'edizione di quest'anno e inserire il template che richiama il modulo.
    • In futuro, anche questo passaggio potrebbe diventare opzionale grazie a estensioni come ArticlePlaceholder, che possono creare in modo semi-automatico degli abbozzi di voce di questo tipo.
  5. Da fare una volta sola: aspettare che la tappa finisca e aggiungere i risultati nell'elemento apposito su Wikidata (in modo che tutte le voci che lo richiamano ottengano i risultati).

In pratica, tutte le versioni ottengono la stessa tavola senza dover muovere un dito (o quasi). Il lavoro viene svolto, da un lato, dalle persone che sanno creare template e moduli e, dall'altro, da chi segue l'evento e aggiorna i risultati. Una piattaforma cross-wiki per sviluppare e localizzare i moduli e i template potrebbe facilitare, inoltre, lo sviluppo di un design che risulti accettabile in tutte le lingue.

Iniziare a contribuire in una wiki appena creata Dopo che i contenuti sono stati importati da Incubator, non esistono template per gli infobox, le note, la gestione delle pagine e delle discussioni, i babelbox, eccetera.

Inizia a copiare quindi tutti questi template, uno per uno, oppure creali da zero.

Magari qualche utente gentile da un'altra wiki può aiutarti nel lavoro, ma siccome molto probabilmente non conosce la tua lingua, dovrai essere tu a tradurre manualmente tutte le stringhe necessarie (come nello scenario “Usare anche sulla tua wiki quel template che hai visto su un altro progetto”).

Puoi anche lasciar perdere l'importazione dei template e limitarti solo a scrivere testo, ma poi avrai meno funzionalità: niente infobox, niente citazioni ben formattate, niente template per la cancellazione, eccetera.

I template sono già tutti disponibili. Devi solo tradurre le stringhe tramite l'interfaccia di traduzione.
Usare un template di navigazione mentre leggi una voce su smartphone o tablet Impossibile

I template di navigazione sono difficilissimi da adattare agli schermi mobile e sono così diversi da wiki a wiki che il software, semplicemente, li nasconde (e sì, c'è chi ha richiesto che si faccia qualcosa).

Possibile

Dal momento che l'infrastruttura dei template è condivisa fra tutti i progetti, le varie comunità linguistiche possono lavorare in modo condiviso fra loro e con gli sviluppatori del settore mobile e rendere i template di navigazione compatibili.

Avere una pagina principale con un design fantastico e leggibile anche da supporto mobile, con notizie, voci in vetrina e immagini aggiornate regolarmente, eccetera Opzione #1: trova uno o più volontari che conoscano bene la tua lingua, l'HTML e la wikisintassi (in particolare, sappiano gestire tabelle e template) e che abbiano tempo di curare la pagina principale ogni giorno. Questo viene effettuato in modo separato e differente per ogni wiki e, all'incirca, le prime 70 versioni hanno una pagina principale così.

Opzione 2: se non trovi nessuno che conosca la tua lingua, l'HTML e la wikisintassi, copia e incolla il codice della pagina principale di Wikipedia in inglese o in francese o nella lingua che vuoi, dopodiché chiedi a dei volontari che non conoscono la tua lingua di aiutarti quantomeno a cambiare l'immagine ogni giorno. Siccome però non conoscono la lingua, questo significa che non potranno aiutarti con la parte testuale - a cui tu non ti avvicini, perché hai paura di combinare guai col codice. Risultato: la pagina principale della tua wiki mostrerà le stesse cose per mesi o per anni. Questo succede in varie comunità più piccole.

Opzione 3: rinuncia ad avere una pagina principale - che tanto non si vedrebbe bene comunque da smartphone o tablet - nonostante sia una delle pagine più visitate in un progetto. Questo succede in varie wiki, talvolta anche attive.

Opzione 1: se ci sono delle persone che hanno la capacità e il tempo di realizzare una pagina principale fatta interamente in locale e che vogliono mantenere tutto com'è, va bene così.

Opzione 2: se non ci sono delle persone che hanno capacità e tempo oppure se la tua comunità è d'accordo ad avere una pagina principale simile ad altre wiki, usa un template centralizzato sulla pagina principale. Traduci o sostituisci solo il testo che deve cambiare attraverso un'interfaccia semplice, senza avere a che fare con tabelle, HTML o wikisintassi. Il procedimento è uguale per molte wiki, quindi gli stessi template e bot possono essere utilizzati da chiunque sia interessato.

Analizzare come le voci vengono categorizzate dai wikiprogetti per una ricerca su Wikipedia
  1. Scrivi un programma che analizza i template di monitoraggio di Wikipedia in inglese e lancialo.
  2. Scopri che non puoi utilizzare lo stesso programma anche per le altre lingue. A questo punto, hai due opzioni:
    1. adatti il codice a ogni progetto;
    2. lasci perdere e ti limiti alla sola Wikipedia in inglese.
  1. Scrivi un programma che analizza i template di monitoraggio e lancialo per tutte le wiki che li usano.

(Nota: quanto scritto nell'ultima colonna parte dal presupposto che l'infrastruttura di base esista per tutti i progetti Wikimedia e che i template più utilizzati siano centralizzati) {{🌎🌍🌏}}

Stato della proposta

Questa sezione si riferisce allo stato generale del progetto. Per i dettagli riguardo gli ultimi sviluppi e per una storia degli sforzi fatti finora, vedi questa pagina (in inglese).

Come già scritto all'inizio, allo stato (dicembre 2020) questa pagina descrive soltanto una bozza di un ampio progetto e non costituisce alcun impegno da parte di alcuno a realizzare un qualsivoglia progetto in tal senso.

Idee simili sono state suggerite anche in passato: la più vecchia richiesta per rendere i template riutilizzabili fra progetti è del dicembre 2004 su Bugzilla (Interwiki templates, task T3126). Altre proposte simili sono state fatte più in là, come task T6547. Nel febbraio 2017, una proposta chiamata Global-Wiki fu chiusa perché “è stato raggiunto il consenso”: in realtà, solo alcune sue componenti sono state realizzate, come le preferenze globali, ma non i template.

La richiesta di un “repository globale centralizzato per template, gadget e moduli Lua” è stata la terza più votata nel Community Wishlist Survey 2015, mentre quella per i “gadget globali” è stata la più votata nel Community Wishlist Survey 2016. Nonostante questi risultati, nessuna di queste richieste è stata realizzata, perché non rientrava nei compiti dell'ufficio Community Tech, né sono state attribuite ad altri team.

Il progetto “Platform Evolution” (2018) ha indicato, fra i suoi obiettivi, l'intenzione di fornire supporto in futuro allo sviluppo dei template globali. Nella pagina “Platform Evolution/Recommendations”, dove vengono discusse delle idee per aggiornare la modularità dei contenuti, c'è scritto:

[...] i “box” sono un focus ideale per creare pagine modulari. Rappresentano funzionalità autonome, ma anche un'opportunità per consentire un'equa condivisione delle funzionalità degli utenti tra progetti e lingue, stabilendo una base tra progetti per condividere i template. Questo progetto ci costringerà anche a considerare come gestire il layout e la struttura del contenuto separatamente dal contenuto dei singoli pezzi.

Nella pagina “Platform Evolution/Goals”, fra gli obiettivi si legge:

Aumentare l'equità e il potere degli mezzi per contribuire. Vogliamo supportare i contributi in più modalità, compresi i file multimediali, in modi più interattivi e su tutti i progetti. Ciò significa adeguare alcuni strumenti già esistenti, come i template, per riutilizzarli in tutti i progetti e in tutte le lingue. Questo significa anche migliorare i tool di traduzione per eliminare i “silos di contenuti”. Infine, vogliamo anche rendere più semplice agli utenti la creazione di nuovi tool di contribuzione, localizzabili su più progetti.

Abstract Wikipedia, il nuovo progetto approvato da WMF nel luglio 2020 che verrà sviluppato nel prossimo futuro, include “un repository per condividere template e moduli fra i progetti WMF” fra i componenti del sottoprogetto Wikifunzioni, definendolo uno degli obiettivi principali (Wikifunzioni è il nome definitivo del progetto “Wikilambda”).

L'iniziativa Translatable modules è stata lanciata a settembre 2020 e affronta parte di questa proposta.

Nel Community Wishlist Survey 2021, la proposta “Templates translation” è risultata essere la più votata (e anche la più votata, al dicembre 2020, nella storia della Community Wishlist). Questa proposta affronta alcune parti di questa proposta, in particolare il paragrafo Traduzione automatica dei parametri.

Per altri esempi di relazione fra questa proposta per i template globali e i vari piani strategici nell'ambito della comunità wikimedia, vedi la pagina Global templates/Relationship to strategy .

Non esiste alcun piano tecnico effettivo per realizzare una condivisione completa di moduli e template fra progetti. Questa pagina è un tentativo di ottenere un primo feedback dalle comunità riguardo un'idea del genere a livello di gestione del prodotto. {{🌎🌍🌏}}

Link utili

Pagine che discutono argomenti simili a questo: