Joomla! 2.5:Gestione multilingua

Da Il wiki di Joomla.it.

Con gestione multilingua si intende la capacita' del sito di fornire i propri contenuti in lingue diverse, ed e' solitamente associata a un selettore di lingua o a pulsanti con immagini di bandierine, che l'utente utilizza per selezionare la lingua desiderata.

Architettura

La gestione multilingua nativa di Joomla! consente di creare un sito multilingua senza installare estensioni di terze parti. Mentre estensioni specifiche per la gestione multilingua utilizzano l'approccio di inserire il contenuto una sola volta, e successivamente tradurre i testi attraverso l'estensione, con la gestione multilingua nativa di Joomla! si crea un contenuto (articolo, modulo, ecc) per ogni lingua definita.
Questo consente di non avere duplicazioni obsolete di contenuti, in quanto l'amministratore del sito può decidere quali contenuti associare ad una lingua e quali ad un'altra, senza essere obbligato a tradurre tutti i contenuti in tutte le lingue. Il sito perciò, passando da una lingua all'altra, può cambiare totalmente contenuti e aspetto. Questo metodo ha inoltre il vantaggio di funzionare nativamente con ogni tipo di modulo e componente, al contrario dell'approccio tipico delle estensioni di terze parti, che necessita di un descrittore in formato xml (non sempre disponibile o aggiornato e funzionante) del contenuto che si vuole tradurre.

Configurazione

Installazione dei pacchetti di lingua

Installare i pacchetti di lingua

La prima operazione necessaria è installare i pacchetti relativi alle lingue che si intende utilizzare. Per il download, fare riferimento all'elenco dei pacchetti di lingua accreditati e a quelli addizionali.

Una volta scaricato il pacchetto lingua, va installato come una normale estensione da Estensioni > Gestione estensioni. Si seleziona il pacchetto compresso e si clicca sul pulsante Carica & Installa.

Le lingue installate saranno visibili in Estensioni > Gestione lingua

Cliccare su Installate - Sito per vedere le lingue lato sito, su Installate - Amministrazione per vedere le lingue amministrative installate

Abilitazione delle lingue per i contenuti

Abilitare le lingue per i contenuti

In questa fase configuriamo Joomla! perche' accetti i contenuti nelle lingue precedentemente installate.
Andare in Estensioni > Gestione lingua e spostarsi sulla linguetta "Contenuti".

Nel pacchetto localizzato italiano sono già presenti la lingua italiana e quella inglese

Usare il pulsante "Nuovo" per aggiungere una nuova lingua contenuto, e compilare i campi richiesti:

Dettaglio singola lingua per i contenuti
  • Titolo: il nome della lingua (es. Francese) come apparirà nei menu a tendina in amministrazione quando si assegna la lingua ad un elemento. Questo titolo verrà utilizzato anche dal modulo Lingua in front-end qualora non vengano utilizzate le bandiere.
  • Titolo nativo: il titolo scritto nella lingua nativa (es. Français) che verrà visualizzato nell'elenco delle Lingue contenuti.
  • Codice lingua URL: questo Codice lingua (es. fr) verrà aggiunto all'url del sito. Se le opzioni SEF sono abilitate, potrebbe essere qualcosa come http://www.miosito.com/fr/. Se le opzioni SEF sono disabilitate il suffisso &lang=fr verrà aggiunto alla fine dell'URL. Nota: il codice della lingua deve essere univoco tra tutte le lingue.
  • Prefisso immagine: prefisso del file di immagine per questa lingua quando si utilizza l'opzione "Usa immagini bandiere" nel modulo Lingua. Esempio: se viene scelto 'fr', l'immagine sarà fr.gif. Immagini e CSS per questo modulo sono già presenti in /media/mod_languages/
  • Tag Lingua: inserisci qui il tag lingua (es. fr-FR per il francese). Questo dovrebbe essere il prefisso esatto utilizzato dalla lingua installata o da installare.
  • Pubblicato: lingua contenuti pubblicata o no. Se pubblicata, verrà visualizzata tra le lingue da scegliere nel modulo Lingua in frontend. Perche' funzioni, deve essere installata la lingua lato sito (frontend). Si possono tuttavia preparare contenuti in una lingua senza averla ancora installata e pubblicarli solo quando si decide di installare tale lingua.
  • Descrizione: campo facoltativo, non necessario.
  • Metadata: questi metadata avranno la precedenza su quelli impostati in Configurazione globale per ciascuna lingua utilizzata.


Abilitazione e configurazione del plugin

Opzioni del plugin Language Filter

Il compito del plugin System - Language Filter e' filtrare i contenuti visualizzati a seconda della lingua selezionata. Per impostazione predefinita e' disabilitato, ed e' quindi necessario abilitarlo.
Andare in Estensioni > Gestione plugin, cercare il plugin System - Language Filter e premere il pulsante rosso che dovrebbe diventare verde segnalando l'avvenuta attivazione.
Quindi entrare nella configurazione del plugin e selezionare le opzioni desiderate:

  • Lingua per nuovi visitatori: come lingua per i nuovi visitatori si può impostare il parametro in modo che venga presa la lingua impostata nel browser, oppure la lingua predefinita del sito.
  • Cambio lingua automatico: cambia automaticamente la lingua lato pubblico del sito quando un utente imposta nel proprio profilo una lingua
  • Associazione menu: consente di associare le voci di menu quando si passa da una lingua all'altra, senza tornare sempre alla homepage predefinita della lingua (vedi approfondimento)
  • Rimuovi il prefisso dalla lingua predefinita: rimuove il Codice lingua URL della Lingua Contenuti predefinita quando il parametro in Configurazione globale Attiva Url SEF è impostato su Sì

Creazione delle pagine predefinite

Cosi' come per un sito monolingua e' indispensabile definire una pagina predefinita (chiamata anche home), nel caso di multilingua, e' necessario definire una home page per ogni lingua.
A complicare la situazione, c'e' pero' un vincolo che impedisce l'esistenza di piu' di una pagina predefinita per ogni menu, e l'obbligo di mantenere anche una ulteriore pagina con attributo "predefinita per tutte le lingue": una specie di home page globale. Risulta necessario quindi avere un numero di menu pari al numero delle lingue piu' uno.

Pagina predefinita globale

Questa pagina in realta' esegue sempre (salvo eccezioni) un redirect ad una home page specifica in lingua. Per evitare confusione, rinominare subito il "Main Menu" in "Menu per tutte le lingue". Questo menu dovrebbe gia' contenere una voce chiamata "Home", che risulta la pagina principale per tutte le lingue. Si riconosce dalla stellina. In caso contrario, bisogna crearla.

  • Da Menu > Gestione menu > Nuovo creare un nuovo menu. Come titolo: "Menu per tutte le lingue".
  • All'interno di questo menu, creare una nuova voce di menu. Come titolo: "Home". Nel parametro Lingua selezionare tutte e impostare il parametro Pagina predefinita su Sì. Come tipo di voce di menu possiamo selezionare ad es. Categoria blog, ma andrebbe bene un tipo qualsiasi.

Pagina predefinita per ogni lingua

  • da Menu > Gestione menu > Nuovo creare un nuovo menu. Come titolo: "Menu Principale"
  • All'interno di questo menu, creare una nuova voce di menu. Come titolo: "Pagina principale". Nel parametro Lingua selezionare l'italiano e impostare il parametro Pagina predefinita su Sì. Come tipo di voce di menu possiamo selezionare ad es. Categoria blog.

Ripetere questo passaggio per ogni lingua installata, scegliendo dei nomi opportuni e diversi tra loro, poiche' Joomla! non accetta alias duplicati.
A conferma della corretta esecuzione, compaiono le bandierine a fianco dei menu e delle pagine predefinite.

Moduli menu per ogni lingua

Quando l'utente sfoglia il sito, dovrebbe vedere le voci di menu riferite alla lingua selezionata. Per questo motivo e' necessario rimuovere eventuali moduli di tipo Menu associati a "tutte le lingue", e crearne uno per ogni lingua.
Entrare in "Estensioni" > "Gestione moduli". Per facilitare la ricerca, impostare il filtro su: lato sito/amministratore = "sito" e tipo = "Menu".
Ad esempio, per l'italiano, creare un nuovo modulo e specificare che e' di tipo "Menu". Assegnare lingua = "Italiano" e nelle opzioni di base (sulla destra) selezionare come menu "Menu principale", che si riferisce al menu per la lingua italiana creato precedentemente.

Inserimento dei contenuti

Il parametro "Lingua"

Multilingua 03.png
Avendo precedentemente creato le Lingue contenuti, le troveremo nella gestione delle varie estensioni di Joomla! all'interno del parametro Lingua.

Ad es. se creiamo un nuovo articolo, tra i parametri troveremo il parametro Lingua, contenente le lingue precedentemente configurate tra le Lingue contenuti.

Questo parametro è presente ma anche nei moduli, le categorie, i banner, i weblink, i newsfeeds, le voci di menu, ecc...
Quindi se un determinato contenuto dovrà essere visualizzato in frontend solo quando si seleziona la lingua italiana, selezioniamo nel parametro Lingua la lingua italiana. Se invece desideriamo che quel contenuto venga visualizzato con qualsiasi lingua, selezioniamo Tutte.

Creazione di categorie specifiche per ciascuna lingua

Per cominciare è consigliato creare categorie articoli per ogni lingua. Andare quindi in Contenuti > Gestione categorie > Nuova categoria e creare nuove categorie per ciascuna lingua impostando il parametro Lingua. Esempio: Inglese: "News", Francese: "Nouvelles", ecc.
Se ad esempio creiamo la categoria Notizie e impostiamo il parametro Lingua su italiano, questa categoria sarà visibile nel sito solo quando viene selezionata la lingua italiana.

Creazione di articoli per ciascuna lingua

Creare degli articoli per ogni lingua. Andare quindi in Contenuti > Gestione articoli > Nuovo articolo e creare uno o più articoli per ciascuna lingua impostando il parametro Lingua.
Gli articoli devono essere associati alla categoria con medesimo tag lingua. Ad es. gli articoli taggati con lingua italiana devono appartenere ad una categoria taggata con lingua italiana.


Attivazione

Il modulo selettore lingua

Creazione del modulo Selettore lingua
Il modulo selettore lingua, cosi' come si presenta nel frontend

Questo modulo permette di visualizzare nel frontend le Lingue contenuti disponibili e di passare da una lingua all'altra nel proprio sito multilingua.
Si crea da Estensioni > Gestione moduli > Nuovo, specificando come tipo modulo Lingua.
Il modulo Lingua può essere associato a tutte le lingue e deve essere pubblicato in una posizione modulo visibile nel sito. Una volta pubblicato, da frontend sarà visibile la scelta della lingua (solo per le lingue che hanno una voce di menu predefinita, vedi sopra):


Il modulo offre la possibilità di impostare i seguenti parametri:

I parametri del modulo Lingua
  • Testo precedente: testo opzionale da visualizzare sopra alla scelta della lingua
  • Testo successivo: testo opzionale da visualizzare sotto alla scelta della lingua
  • Usa menu a tendina: sì può decidere se visualizzare le lingue con un menu a tendina invece che con le bandierine.

Se 'Usa menu a tendina' è impostato su 'Sì', le seguenti opzioni verranno ignorate

  • Usa immagini bandiere: se impostato su Sì verranno mostrate le bandierine, altrimenti verrà mostrato il nome delle lingue.
  • Visualizzazione orizzontale: si può scegliere se visualizzare le bandierine disposte in orizzontale o in verticale
  • Lingua attiva: visualizza o meno la lingua attiva

Se 'Usa immagini bandiere' è impostato su 'Sì', le seguenti opzioni verranno ignorate

  • Nome lingue esteso: se questo parametro è impostato su Sì e 'Usa immagini bandiere' su No, verranno visualizzati i nomi delle lingue contenuto. Se impostato su No, verranno visualizzate le abbreviazioni delle lingue (es. IT, EN, FR)





Ordine delle bandierine visualizzate dal modulo Selettore lingua
Per ordinare le bandierine a proprio piacimento, andare in Estensioni > Gestione lingua: Lingue contenuti e cliccare sulla parola Ordine. Sarà così possibile utilizzare i numeri accanto alle lingue per ordinarli e poi salvare cliccando sull'iconcina Salva ordine, oppure usare direttamente le freccine blu.[Questa funzionalità sarà disponibile in Joomla 2.5.4]







Il modulo stato multilingua

Individuare e abilitare il modulo stato multilingua
Consultare il modulo stato multilingua

Questo modulo del backend esegue una verifica della corretta configurazione del multilingua e segnala eventuali problemi. E' bene a questo punto abilitarlo e consultarlo.
Andare in Estensioni > Gestione moduli. Selezionare con il filtro lato: "Amministratore" e tipo: "Stato multilingua". Il modulo dovrebbe essere gia' presente, ed e' sufficiente attivarlo.

Quando attivo, nell'angolo in alto a destra a fianco delle informazioni sugli utenti connessi, compare il link "Stato multilingua" che se premuto esegue la validazione.

La gestione della multilingua con la configurazione predefinita e' stata attivata. E' ora possibile tornare nel frontend e guardare il risultato.






Approfondimenti

Associare le voci di menu

Associare le voci di menu

Per impostazione predefinita, quando l'utente cambia lingua nel modulo "selettore lingua", viene rediretto alla pagina principale per la lingua selezionata. Dopodichè, la navigazione del sito sarà come definito per quella lingua, a seconda delle voci di menu, moduli e contenuti associati a quella lingua.
La funzione di associazione delle voci di menu, invece, consente di correlare le voci di menu in diverse lingue, e garantisce quindi un passaggio diretto all'analoga pagina per la lingua selezionata, senza tornare alla pagina principale.
Quando una voce di menu, ad esempio "Contattaci", viene associata ad una voce di menu ad esempio "Contact us", cliccando sulla bandierina inglese sara' un collegamento alla analoga voce di menu inglese e viceversa.

Perche' funzioni è necessario attivare il parametro Associazione menu nel plugin "Language filter", in questo modo tra i parametri delle voci di menu del sito apparirà l'opzione Associazione a voci di menu, da dove si può scegliere a quali voci di menu delle altre lingue associare la singola voce di menu.
Se non è associata una voce di menu, si verrà rediretti alla home page della lingua.

Allo stato attuale non e' possibile associare tra di loro

  • le categorie
  • gli articoli
  • componenti nativi di Joomla! o di terze parti non collegati ad una voce di menu. (Ad esempio, se siamo sulla pagina di registrazione /it/component/users/?view=registration il selettore di lingua torna comunque sulla pagina predefinita, e non come ci si aspetterebbe su /en/component/users/?view=registration)

Definire un template specifico per ogni lingua

Se si vuole utilizzare un template per ogni lingua, invece di definire per ogni voce di menu un diverso stile template, si può assegnare a livello globale un template per ogni lingua da Gestione template.
Selezionare un template, che non sia quello predefinito per il sito, e nel parametro Predefinito selezionare una lingua.

Questo è molto utile quando si ha la necessità di utilizzare intestazioni, loghi, ecc diversi per ogni lingua.
Questa configurazione garantisce un buon funzionamento anche in situazioni particolari, ad esempio quando si carica una pagina non collegata ad alcuna voce di menu, in cui dovrebbe essere usato il template di default.

In questo sito è visibile una demo di come funziona il sistema multilingua: http://multilingual-joomla-demo.cloudaccess.net


Fonte: http://docs.joomla.org/Language_Switcher_Tutorial_for_Joomla_1.6


Post di riferimento nel forum