Realizzare un sito multilingue

La modifica più significativa aggiunta a SPIP 1.7 è la sua gestione "naturale" dei siti multilingue. Il presente articolo riguarda esclusivamente la versione SPIP 1.7.

Premessa: cos’è un sito multilingue?

Questo articolo non vuole essere un tutorial completo sui siti multilingue: da una parte, vi sono sicuramente molte "opinioni" sulla definizione di "multilinguismo"; d’altra parte, non siamo abbastanza obiettivi per poter dire qual è "il metodo migliore".

Faremo quindi una panoramica dei diversi strumenti che SPIP propone per gestire siti multilingue; sta a ognuno utilizzarli, e se ne può discutere negli spazi previsti a tal fine (wiki, liste di discussione, ecc.)

Ma, prima di leggere, dimentichiamo per un attimo il nostro programma giornaliero e pensiamo alle seguenti situazioni:
-  un sito di poesie, ordinate per argomenti (rubriche);
-  un sito di documentazione per un programma tipo SPIP;
-  un sito istituzionale in 25 lingue;
-  un sito corporate bilingue;
-  il sito di un’associazione bulgara con alcune pagine in inglese.

Il sito di poesie sceglierà le sue lingue articolo per articolo; la documentazione di SPIP, invece, le suddivide per "sezioni" (rubriche di primo livello) e visualizza le traduzioni eventualmente disponibili per ciascun articolo. Il sito istituzionale in 25 lingue non potrà forse fornire le 25 traduzioni contemporaneamente, ma cercherà comunque di mantenere delle arborescenze parallele; il sito corporate bilingue dovrà avere obbligatoriamente una traduzione a fianco di ciascun articolo, e una struttura ad albero delle rubriche in due parti, dove la parte inglese viene "clonata" sulla parte in italiano; l’associazione bulgara metterà l’inglese in una sezione specifica del proprio sito, il resto delle sezioni invece saranno tutte in bulgaro (per default).

Principio

Per poter permettere queste situazioni e altre ancora, il modello attuato in SPIP consiste nel determinare una lingua per ogni articolo, ogni rubrica e ogni breve. Nell’area pubblica e in quella riservata questa lingua determina il modo di correzione ortografica applicato ai testi; nell’area pubblica ciò determina anche la lingua degli elementi inseriti da SPIP intorno a questi "oggetti": principalmente date e form.

Per creare un sito multilingue con SPIP, innanzitutto è necessario configurare appropriatamente il sito. Nella configurazione del sito, alla sezione "lingue", è possibile attivare la gestione del multilinguismo e scegliere le lingue utilizzate sul sito.

Configurare l’area riservata

Per gestire più facilmente il sito, è possibile scegliere nella configurazione del sito il livello di precisione delle impostazioni delle lingue, che permette di mascherare l’interfaccia dove essa non è necessaria e di limitare i rischi di errore. [1] SPIP propone tre livelli d’interfaccia differenti per scegliere le lingue attribuite agli articoli (alle brevi, ecc.); per ordine crescente di complessità:

-  Per sezione (rubrica di primo livello): ad ogni rubrica della radice del sito corrisponde una lingua modificabile dagli amministratori, che riguarda tutte le sue sotto-rubriche come pure gli articoli e le brevi ivi pubblicati; questa impostazione dovrebbe soddisfare i bisogni della maggior parte dei siti multilingui pur mantenendo una struttura e un’interfaccia semplici.

-  Per rubrica: in maniera più fine, con questa impostazione si può cambiare la lingua per ciascuna rubrica del sito e non solamente per quelle di primo livello.

-  Per articolo: la lingua può essere modificata a livello di ogni singolo articolo; questa scelta è compatibile con le precedenti (per esempio, è possibile scegliere la lingua per rubrica ma applicare delle eccezioni di qua e di là ad alcuni articoli) e permette tutte le finezze immaginabili, ma è necessario fare attenzione a non produrre un sito con una struttura incomprensibile...

Blocchi multilingui

[SPIP 1.7.2] Alcuni oggetti, come gli autori o le parole chiave, possono avere un’ortografia diversa in base alla lingua attribuita all’articolo. Tuttavia, sarebbe assurdo fare le "traduzioni di parole chiave" o la "traduzione di un autore", poiché è lo stesso autore che firma i due articoli, o la stessa parola chiave (stesso "concetto") che viene attribuita. Questi oggetti non hanno quindi una lingua nel senso di SPIP, ma è comunque possibile, con l’aiuto dei "blocchi multilingui", di farli visualizzare nella lingua del contesto nel quale sono chiamati (per dirla in parole povere: in maniera che la parola "Iraq" venga scritta "Irak" quando è attribuita a un articolo in francese).

Il "blocco multilingue" è una nuova scorciatoia di SPIP, e la sua struttura è relativamente intuitiva:

<multi>stringa 1 [xx]stringa 2 [yy]stringa 3 ...</multi>

Riprendendo l’esempio della parola chiave, il suo titolo viene inserito nella forma seguente :

<multi>[fr]Irak [it]Iraq</multi>

Nel caso in cui un blocco multilingue viene chiamato in una lingua non prevista, viene visualizzata sempre la prima parte del blocco ("stringa 1" nel primo esempio, "Irak" nel secondo). In tal modo non vi sarà mai un "buco" nella visualizzazione. [2]

N.B.: i blocchi multilingue possono essere utilizzati, seguendo la stessa struttura, anche nei modelli, cfr. Internazionalizzare i modelli.

Cicli e segnaposti: come fare

Dopo aver impostato accuratamente l’area riservata passiamo ora al sito pubblico. Ebbene sì, anche se ogni articolo ha ora la propria lingua giudiziosamente scelta (in base al meccanismo suesposto), i modelli devono poterne tenere conto nella visualizzazione del sito.

1. Per cominciare, una buona notizia: il multilinguismo dei modelli è per la maggioranza dei casi totalmente naturale; non è necessario fare modelli diversi per visualizzare articoli in lingue diverse. Il medesimo modello adatta automaticamente la sua visualizzazione alla lingua corrente.

Pertanto, tutti gli elementi visualizzati intorno e dentro un articolo in una data lingua verranno mostrati in quella lingua. Ciò riguarda sia la data di pubblicazione dell’articolo sia i form di risposta ai forum, di firma di una petizione, eccetera. Più in generale: ogni segnaposto di SPIP compreso in un ciclo ARTICLES viene visualizzato nella lingua dell’articolo (e pure delle rubriche e delle brevi).

Esempio: se la homepage del sito contiene un indice che mostra gli ultimi dieci articoli pubblicati e la data di pubblicazione, la data degli articoli in vietnamita viene mostrata in vietnamita, quella degli articoli in creolo dell’Isola della Riunione in creolo e così via.

Nota: questo funzionamento suppone che la lingua dell’articolo è oggetto di una traduzione in SPIP. Quindi, se un articolo è scritto in volapück ma la versione di SPIP non ha ancora questa traduzione (noi invitiamo chiunque a colmare questa lacuna partecipando al lavoro di traduzione), la data dell’articolo viene visualizzata in una lingua predefinita - probabilmente il francese.

2. Il senso di scrittura

Se il sito contiene lingue che si scrivono da sinistra a destra (la maggioranza delle lingue) ma anche lingue che si scrivono da destra a sinistra (in particolare l’arabo, l’ebraico o il farsi), bisognerà apportare alcune modifiche al codice HTML affinché la visualizzazione avvenga senza intoppi [3].

SPIP offre un segnaposto dedicato a questo scopo: #LANG_DIR, che definisce il senso di scrittura della lingua corrente. Questo segnaposto è utilizzabile come valore dell’attributo dir nella maggior parte dei tag HTML (quindi ciò dà "ltr" per le lingue che si scrivono da sinistra a destra e "rtl" per le altre. [4]).

Pertanto, un ciclo di visualizzazione dell’indice diventa:

<BOUCLE_indice(ARTICLES){par date}{inverse}{0,10}>
  <li dir="#LANG_DIR">[(#DATE|affdate)]:
  <a href="#URL_ARTICLE">#TITRE</a></li>
</BOUCLE_indice>

Se l’impaginazione si basa su elementi allineati a destra o a sinistra, questi devono essere invertiti per le lingue scritte da destra verso sinistra: si può pensare subito a sostituire tutti [5] gli elementi del modello marcati left o right con i segnaposti #LANG_LEFT e #LANG_RIGHT. Per quanto riguarda la definizione della pagina in sé è sensato cominciare dando la lingua dell’elemento richiesto, e la direzione generale della pagina:

<html lang="#LANG">
<body dir="#LANG_DIR">
...
</body>
</html>

3. I link di traduzione

SPIP propone un sistema di traduzioni tra articoli: è possibile specificare quali sono le diverse traduzioni di un articolo (nota: queste traduzioni sono di per sé articoli veri e propri). Il criterio {traduction} permette quindi, in un ciclo ARTICLES, di recuperare tutte le versioni di uno stesso articolo.

Per esempio, per visualizzare tutte le traduzioni dell’articolo corrente:

<BOUCLE_traduzioni(ARTICLES){traduction}{exclus}>
[<a href="#URL_ARTICLE" dir="#LANG_DIR">(#LANG|traduire_nom_langue)</a>]
</BOUCLE_traduzioni>

Notiamo il criterio {exclus}, che permette di non visualizzare la versione corrente, e il filtro {traduire_nom_langue} che restituisce il nome esteso della lingua a partire dal codice informatico (ciò permette di mostrare "italiano" invece di "it", "English" invece di "en"...).

-  Un criterio complementare {origine_traduction} (per i più ostinati) permette di selezionare solo la "versione originale" dell’articolo in questione.

Una pagina di wiki di spip-contrib raccoglie esempi di cicli che utilizzano questo criterio: http://www.spip-contrib.net/spikini....

4. Elementi supplementari

[SPIP 1.7.2] introduce altri elementi che permettono di creare siti multilingui:

— il criterio {lang_select} serve a forzare la selezione della lingua per il ciclo (AUTEURS), che normalmente non lo fa (al contrario, il criterio {lang_select=non} permette di dire ai cicli (ARTICLES), (RUBRIQUES) o (BREVES) di non selezionare la lingua).

— la variabile di personalizzazione $forcer_lang indica a SPIP che deve verificare se il visitatore ha un cookie di lingua, e in caso positivo di inviarlo verso la pagina corrispondente. È quel che fa la pagina di connessione all’area riservata fornita nel pacchetto standard di SPIP.

— i segnaposti #MENU_LANG (e #MENU_LANG_ECRIRE) visualizzano un menu di lingua che permette al visitatore di scegliere "questa pagina in...". Il primo segnaposto mostra l’elenco delle lingue del sito; il secondo l’elenco delle lingue nell’area riservata (esso è utilizzato nella pagina di connessione all’area riservata).

— infine, i criteri opzionali (cfr. SPIP 1.7, SPIP 1.7.2) permettono di usare uno stesso ciclo (in effetti, uno stesso modello) per visualizzare o tutti gli articoli del sito in tutte le lingue o solamente gli articoli nella lingua passata nell’URL. Ciò può rivelarsi utile nei file di backend, per esempio, o nei cicli di ricerca:

<BOUCLE_recenti(ARTICLES){lang?}{par date}{inverse}{0,10}>
<BOUCLE_ricerca(ARTICLES){lang?}{recherche}{par points}{inverse}{0,10}>

Modelli internazionali per un sito contenente molte lingue

Quel che abbiamo visto fin qui ci ha permesso di rendere multilingue la parte propriamente SPIP del nostro modello: tutto quel che viene estratto dai cicli viene mostrato nel giusto senso di scrittura, con l’ortografia corretta, e gli elementi prodotti da SPIP (form, date...) sono nella lingua richiesta.

Per un sito che presenta un numero modesto di lingue (per esempio bilingue), o per il quale esiste una lingua principale e alcune lingue aggiunte, ciò potrebbe bastare. I testi fissi presenti nei modelli, ovvero quelli scritti direttamente nell’HTML come "Mappa del sito", "Redazione", "Rispondi a questo messaggio"... possono in alcuni casi restare in una sola lingua; oppure, un sito bilingue potrà utilizzare modelli separati per ogni lingua.

Tuttavia, se vogliamo creare e gestire efficacemente un sito che presenta molte lingue ovunque, è pura illusione mantenere dei modelli separati, o imporre una navigazione in una sola lingua (anche se in inglese o in esperanto...). Per realizzare un set di modelli unici che funzionino in tutte le lingue è necessario internazionalizzare i modelli al fine di modificare i testi indipendentemente dal codice HTML che li contiene (che rimane immutabile da una lingua all’altra). Questo compito necessita di sapere "dove mettere le mani" ed è oggetto di un articolo separato.

Dettagli aggiunti

-  Le scorciatoie tipografiche <code> e <cadre> producono sempre un testo scritto da sinistra a destra, anche se la lingua dell’articolo si scrive normalmente da destra a sinistra. In effetti queste due scorciatoie sono destinate a visualizzare codici o dati informatici, che sono quasi sempre scritti da sinistra a destra (e, la maggior parte delle volte, in caratteri occidentali).

-  Sempre per quel che riguarda il senso di scrittura, notiamo che gli attributi left e right dell’HTML sono spesso presenti anche nei fogli di stile. Ciò significa che forse bisognerà includere la parte corrispondente del foglio di stile nei propri modelli (per utilizzare i segnaposti #LANG_LEFT e #LANG_RIGHT) invece che metterla in un file separato.

Di seguito riportiamo un sommario del comportamento dei segnaposti di SPIP riguardanti il senso di scrittura:

Lingua#LANG_LEFT#LANG_RIGHT#LANG_DIR
lingue scritte da sinistra a destra left right ltr
arabo,farsi,ebraico... right left rtl

Note

[1Vogliamo precisare che nella configurazione di origine di SPIP esso è monolingue, al fine di non complicare l’interfaccia.

[2Se, al contrario, si desidera che non venga visualizzato nulla, è necessario creare una prima parte vuota con un codice di lingua qualsiasi.

[3In teoria l’HTML dovrebbe fare gli adattamenti in maniera automatica, ma il risultato non è sempre ottimale, soprattutto durante i ritorni a capo o se si mischiano lingue utilizzando un senso di scrittura diverso.

[4Sfortunatamente, le richieste di standardizzazione sembrano ignorare al momento la [scrittura bustrofedica], e ciò ne impedisce l’utilizzo con l’HTML.

[5Se tutti o quasi tutti deve essere valutato caso per caso in base alla particolarità della propria impaginazione...

Autore Fausto Barbarito Publié le : Mis à jour : 12/04/23

Traductions : عربي, català, English, Español, français, italiano, Nederlands, Türkçe