Da un paio di settimane ho iniziato a sviluppare una nuova versione di JuniorCMS, il software su cui è basato questo blog e su cui realizzo tutta la mia produzione web.
Innanzitutto ho deciso di realizzare una soluzione multilingua che adotti gli accorgimenti tecnici necessari ad ottenere un buon posizionamento nei motori di ricerca.
Variabili di Sessione
La tecnica maggiormente utilizzata nei CMS multilingua l'utilizzo di una variabile di sessione: ogni documento (url) è disponibile in più lingue. All'inizio della navigazione scelgo la lingua con cui verranno prodotte le pagine finali.
"http://www.consulenza-web.com/index.php?section=3" può produrre pagine sia in italiano che in inglese. In mancanza di una scelta specifica da parte del navigatore verrà utilizzata una lingua predefinita.
Questa tecnica si basa sulla memorizzazione lato server della lingua desiderata e presenta i seguenti svantaggi:
- Più documenti condividono la stessa url.
- Lingue diverse hanno la medesima struttura del sito.
Il primo svantaggio è legato all'ottimizzazione SEO: i motori di ricerca indicizzeranno solamente le pagine della lingua predefinita, ovvero i contenuti accessibili senza operare la scelta della lingua.
Il secondo svantaggio è più difficile da apprezzare ed è legato alle differenze sociali che possono intercorrere tra differenti culture.
Molto spesso nasce l'esigenza di produrre siti radicalmente differenti per lingue diverse:
Un'azienda che produce abiti deve realizzare il sito destinato alla produzione italiana e cinese. Nel sito cinese sicuramente verranno proposti i kimono, abiti che in Italia sicuramente non vengono portati.
Tutto il Contenuto è Accessibile:
Questa è stata la linea guida che ho seguito durante lo sviluppo. Innanzitutto non esistono variabili di sessione: pagine di lingue diverse sono di fatto indipendenti e dotate di url dedicate.
In secondo luogo ho raggruppato le pagine di una stessa lingua in una directory coerente all'identificazione internazionale della lingua stessa. In questo modo la pagina "chi siamo" e "who we are" avranno url simili a:
http://www.consulenza-web.com/it/docs/chi_siamo.22
http://www.consulenza-web.com/gb/docs/who_we_are.23
Esse sono inoltre pagine diverse e solo a livello logico forniscono l'una la traduzione dell'altra.
Logica di Amministrazione:
Durante lo sviluppo mi sono anche posto delle domande relative a come un sito multilingua possa venir amministrato. Una soluzione "classica" prevede che, scegliendo di modificare il documento "22", io abbia accesso alle sue varie traduzioni. In questo modo l'amministrazione è unica ed ogni amministratore ha accesso in modifica al contenuto di ogni lungua su cui ha diritti.
Ho scelto di applicare una logica radicalmente differente: in un dato momento una persona può amministrare un'unica lingua.
Di fatto il CMS gestisce una macro vista legata alla lingua in uso e permette di modificare solamente i documenti legati a tale lingua.
In questo modo è possibile definire delle politiche di amministrazione legate alla lingua oltre che alla singola pagina. In definitiva io, Marco Pegoraro, mi occupo di scrivere degli articoli in italiano... la produzione inglese sarà compito di qualcun'altro.
Il CMS è Open Source:
In conclusione voglio dare i recapiti di tale software:
JuniorCMS.com - sito ufficiale.
CakePHP.org - Framework su cui è basato JuniorCMS.
