Progettare un CMS Multilingua

Pegoraro Marco, 18 Aprile 2007

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.

Commenti all'articolo:

sbaglio ho è a pagamento? ma di questi tempi se ne trovano molti gratuiti anzi open source perchè, tranne che non vorrai far finire il tuo cms nel dimenticatoio, consiglio di rendere almeno una versione open source come Joomla Mambo Drupal Wordpress Phpnuke eZpublish Typo3 TextPattern ecc.. ecc..
04/06/2007 01:11
Ciao,
premetto che in linea di massima non avrei pubblicato il tuo post visto che non hai messo una mail valida.

In ogni caso mi dai lo spunto per chiarire un paio di cose:

- Il post qui sopra è una generale riflessione su come implementare il multilingua in un cms.

- Jcms è Open Source e anche gratuito... solo che non è ancora arrivato ad una versione stabile e distribuibile. Ci sto lavorando e non vedo l'ora di concluderla e dare il via ai download.

- Jcms sarà disponibile al download nella sua versione "common". Eventuali modifiche/espansioni che mi verranno commissionate dai clienti saranno rese disponibili OpenSource e/e gratuite in base alla volontà del cliente che me le ha commissionate.

Ciao,
Marco.
04/06/2007 10:39
by thepeg
Hai dimenticato un'altro metodo non meno importante (e NON meno utilizzato) di quelli elencati.
Prima di dirti quale sia ti chiedo se utilizzi gli strumenti per webmaster di Google (http://www.google.com/webmasters/).
Se sì, ti chiedo di accedere e, una volta giunto nella bacheca, di leggere la barra degli indirizzi... Nel mio caso trovo:
https://www.google.com/webmasters/tools/siteoverview?hl=it
dove "hl=it" sta per lingua italiana: spesso BigG, svalvola e diventa inglese, allora io (a mano) modifico la lingua e... et voilà Google ridiventa italiano!

In questo modo non hai il problema dell'indicizzazione e, volendo, neanche quello della presentazione dei contenuti...

Dopotutto se uno strumento del genere lo usa Google, non credo sia poi così male...
28/06/2007 23:20
by DAG
Forse sbaglio, ma credo abbia ragione JoomlaMamboDrupalWordpressPhpnuke (che cacchio di firma? C'è ancora genete che commenta pensando al passaggio di PR? :[ ): dal sito JuniorCMS.com il software risulta a pagamento.
Ho fatto una ricerca nel tuo sito ed ho trovato la pagina:
www.juniorcms.com/download-juniorcms.dc-20.html
con il link "Scarica JuniorCMS!"... Purtroppo il link è interrotto (404 Not Found)...

Mah...

Comunque, a parte tutto, ti faccio i miei complimenti ;)

Dag
28/06/2007 23:31
by DAG
Ciao DAG,

il metodo che citi è simile a quello proposto nell'articolo con la sola differenza di non essere rimappato via htaccess.

L'utilizzo del parametro va benissimo però tenendo conto che "bigG" non ama gli url parametrici può essere un piccolo impedimento all'ottimizzazione strutturale del sito.

Spostare quel parametro dentro all'url come se fosse una sottodirectory del sito ti permette di avere un url non parametrico e di avere anche le varie lingue logicamente isolate in diverse directory. In questo modo se per caso una lingua dovesse essere penalizzata dalle serps le altre non dovrebbero risentirne.

In ogni caso ti ringrazio di cuore per l'intervento.

Marco Peg.
29/06/2007 13:06
by thepeg
Scusa DAG, non aveno letto l'altro post.

JuniorCMS è al momento in fase di costruzione. Ho tutta l'intenzione di renderlo open source ma non gratuito.

Faccio notare che OS != FREE.

In ogni caso la versione acquistabile on-line sarà rilasciata ad un prezzo accessibile... pensavo intorno ai 25€.

Il link che hai trovato è di una versione precedente del sito. Purtroppo ho fatto un po' di cambiamenti ma non ho ancora avuto il tempo di concludere il progetto e finalizzare il sito di presentazione.

Spero tanto a fine estate di potermici dedicare un po'... Intanto sto ottimizzanzo sempre più il CMS grazie ai molti progetti nei quali viene impegato.

Ciao,
Peg.
29/06/2007 13:10
by thepeg
> OS != FREE
Effettivamente, si fa spesso confusione (per maggiori informazioni su cosa sia veramente l'open source potete leggere qua: http://it.wikipedia.org/wiki/Open_source/). Comunque 25 € è abbastanza onesto :)

> bigG" non ama gli url parametrici
Io correggerei la frase in:
bigG" non amaVA gli url parametrici; per maggiori dettagli:
- http://www.levysoft.it/archivio/2007/03/23/google-e-lurl-rewriting/
- http://tagliaerbe.blogspot.com/2006/11/url-rewriting-non-serve-pi.html
- http://googlewebmastercentral.blogspot.com/2006/10/update-to-our-webmaster-guidelines.html)

Ciao.
30/06/2007 00:04
by DAG

Categorie: Software; CakePHP;


Aggiungi il Tuo Commento:

Inviando questa risposta dichiaro di aver letto ed approvato le condizioni di utilizzo di questo sito web.

(*) = campo obbligatorio.


Condizioni di Utilizzo:

1 - Tutte le risposte inviate a questo sito saranno sottoposte a moderazione manuale da parte dell'amministratore al fine di evitare il fenomeno detto "SPAM".

2 - Tutti i dati inseriti nel modulo di risposta verranno pubblicati in questa pagina ad eccezione dell'e-mail. Tale informazione viene richiesta ed archiviata dagli amministratori al fine di scoraggiare un utilizzo non consono del blog.

3 - Non utilizzare le risposte per pubblicizzare il tuo sito web. Tale tentativo verrà cancellato dall'amministratore. In ogni caso ai link inseriti nelle risposte viene applicato il "nofollow" per cui non ti portano vantaggi.
Se vuoi possiamo discutere uno scambio link: Srivimi!