Come creare un sito web multilingue con aggiornamenti continui

La mia esperienza

I software sono spesso traducibili, poiché gli sviluppatori e le sviluppatrici sono consapevoli dell’utilità di questo sforzo.

Con un po’ di fortuna, verrà utilizzata una piattaforma di traduzione di qualità, come Weblate, e le modifiche al software saranno trasmesse in tempo reale ai traduttori e alle traduttrici, mentre le traduzioni torneranno nel repository.

Il software è solo la punta dell’iceberg, ciò che si utilizza direttamente; tuttavia, senza gli elementi di contesto necessari per descriverlo, è difficile comunicarne i dettagli se tutte le comunicazioni sono in inglese. Occorrono spiegazioni su cosa fa il software, a cosa serve, come utilizzarlo, ecc.

I siti web, che costituiscono la base della comunicazione di un progetto, sono spesso traducibili. Le tecnologie utilizzate per la creazione di questi siti web sono relativamente poco standardizzate e risentono della volontà dei creatori di personalizzarli per diversificarne i contenuti, cosa che è possibile ottenere tramite alcuni tag HTML.

La documentazione costituisce un mondo a sé stante, i cui strumenti provengono spesso dagli ecosistemi di sviluppo (documentazione tecnica) o di collaborazione (wiki); è piuttosto raro che tali strumenti offrano i requisiti di internazionalizzazione necessari per consentire la collaborazione. Tuttavia, il problema è molto simile a quello che si presenta per un sito web.

Infine, le comunicazioni più dirette, che vanno dalle informazioni sui cambiamenti di una nuova versione ai post sui social media volti a promuovere gli strumenti, sono raramente multilingue.

Perché sono così pochi i siti che possono essere tradotti?

Per garantire una traduzione di qualità, sono necessarie funzionalità di internazionalizzazione del software che consentano di ridurre lo sforzo e la complessità dello sviluppo, nonché un processo fluido in cui i traduttori possano inserirsi.

Prerequisiti per l’internazionalizzazione di un sito web:

  1. gestire la scrittura da destra a sinistra
  2. pubblicare i contenuti in più lingue senza dover modificare i link interni
  3. consentire di cambiare lingua in qualsiasi pagina
  4. tenere conto dell’intestazione Accept-Language per indirizzare alla lingua corretta
  5. consentire qualsiasi lingua e tipo di scrittura esistente al mondo

Detto così sembra un compito arduo e impegnativo, ma alcuni standard come l’UTF-8, qualche tag HTML e strumenti progettati appositamente per queste esigenze rendono il tutto piuttosto semplice.

Gli strumenti su cui fanno affidamento gli sviluppatori devono includere funzionalità che consentano di farlo facilmente: è ciò che viene definito «internazionalizzazione». Se lo strumento non presenta esempi multilingue nella sua documentazione o una sezione dedicata all’internazionalizzazione, è meglio evitarlo. Esistono sicuramente alternative migliori, non c’è dubbio.

Requisiti per la collaborazione: gli sviluppatori devono conoscere gli strumenti che facilitano il lavoro dei traduttori e saperli utilizzare con disinvoltura.

  • Un traduttore deve essere in grado di tradurre senza accedere al codice sorgente o al repository del software.
  • Un traduttore deve poter aggiungere la propria lingua senza dover chiedere l’autorizzazione.
  • Un traduttore deve poter modificare una traduzione senza dover chiedere l’autorizzazione.
  • Un traduttore deve poter essere informato delle modifiche che riguardano una traduzione.
  • Le traduzioni devono essere implementate automaticamente senza l’intervento di persone.
  • Il team di sviluppo deve essere facilmente raggiungibile in caso di problemi (autonomia ≠ autosufficienza)

Scegliere con cura lo strumento per la creazione di siti statici

In questa sede verranno presi in considerazione solo gli strumenti che consentono di generare siti web a partire da file. Un sito dinamico comporta una complessità molto specifica che non è necessaria per la maggior parte dei progetti di software libero. Si tratta addirittura di una complessità superflua di cui si può fare a meno, per risparmiare lavoro di manutenzione, costi e rischi per la sicurezza.

Senza bisogno di competenze specifiche in materia di sviluppo, mettiamo a confronto questi tre strumenti:

Non c’è bisogno di pensarci troppo: volete un sito statico pronto all’uso e multilingue? Usate Hugo.

Non è una critica personale nei confronti di Pelican e Jekyll, ma oltre ad avere meno funzionalità rispetto a Hugo, il semplice fatto di dover modificare le intestazioni dei file da tradurre rappresenta un passaggio fastidioso nel processo di automazione. Eppure l’obiettivo è proprio l’automazione a tutti i livelli, richiedendo il minor lavoro possibile! Alcuni progetti riescono a internazionalizzare correttamente i siti web con questi strumenti, a costo di uno sforzo maggiore e offrendo probabilmente meno funzionalità (ad esempio, gli URL saranno in inglese anziché tradotti).

Un caso di studio: questo blog

Per mettere in pratica questo lavoro di automazione con dati reali, ecco le mie specifiche tecniche:

  • Non devono essere apportate modifiche agli articoli nella lingua di partenza
  • Utilizzo di Weblate come piattaforma di traduzione
  • Non è necessaria alcuna configurazione in Weblate per aggiungere un nuovo articolo
  • In Hugo non è necessaria alcuna configurazione per aggiungere una lingua
  • Una pubblicazione completamente automatizzata

I passaggi da seguire sono semplici.

Trovare una struttura dei contenuti adeguata

  • content/fr conterrà tutti i contenuti del sito* l10n/ tutti i file di traduzione * l10n/config le stringhe da tradurre relative alla traduzione di Hugo
  • l10n/pot i modelli di traduzione (file POT)
  • l10n/po/%lang% le traduzioni in ciascuna lingua (file PO)

Il convertitore di formato po4a convertirà il contenuto in modelli di traduzione (file POT).

Uno script Python richiamerà polib per identificare le lingue che hanno almeno un articolo tradotto per almeno l'80% (percentuale di parole del testo originale tradotte).

Un altro script Python aggiornerà la configurazione di Hugo utilizzando le poche impostazioni da tradurre (nome del blog, descrizione del blog…).

Si tratta di una soluzione fai-da-te che funziona; si possono fare diverse cose per semplificare questo strumento. Utilizzare la configurazione di po4a invece di richiamare i suoi sottocomandi ed eliminare la necessità di usare polib per avere un unico file Python.

Perché non utilizzare il supporto Markdown di Weblate? Weblate è una piattaforma di traduzione; la conversione dei file è una funzione secondaria. Gli strumenti dedicati svolgono questo compito meglio di Weblate; separare le responsabilità riduce la dipendenza e quindi aumenta l’autonomia necessaria per far evolvere la catena di automazione. Esempio tipico: po4 potrebbe essere sostituito da un altro strumento.

Risultato e insegnamento

La nostra comunità del software libero ha la possibilità di creare siti web multilingue con estrema facilità.

Manca tuttavia la documentazione necessaria per spiegare come integrare gli strumenti esistenti al fine di realizzare una linea di produzione completa.

Questo articolo mira quindi a colmare tale lacuna e a incoraggiare l’adozione di questo meccanismo da parte dei progetti interessati.

Gli strumenti saranno sicuramente migliorati e semplificati, e saranno archiviati in un piccolo progetto dedicato che ne spiegherà il funzionamento, al fine di massimizzarne il riutilizzo. Per ora, date un’occhiata al repository Git del sito languages-in-floss per trovare i pochi script disponibili.

Last build: 2026-04-14 02:10:25