Previous and Next posts:
Friday, March 2nd, 2007

Parola d’ordine: multilingua.

O meglio, “bilingue”. Nel mio caso, fondamentalmente avevo bisogno di scrivere articoli in due lingue (italiano e inglese). Durante le mie prime ricerche ho trovato numerosi plugin che supportano lingue multiple in un singolo post con feature per passare da una all’altra lato-client. Non è esattamente quello che cercavo: post distinti in differenti lingue ma legati tra di loro da una relazione del tipo “uno traduzione dell’altro”. Lo switch di lingua deve essere “globale”, a livello di sito: navigando il blog in inglese l’utente deve vedere solo post in inglese; ogni articolo deve esporre un link alla sua traduzione -se presente- nell’altra lingua altrimenti indicare che esiste solo la versione in quella lingua.

Tutto questo -ed altro- è reso possibile aggiungendo il plugin “Gengo” per wordpress.
In realtà Gengo -così com’è- non copre proprio tutte le mie necessità specifiche (e ci mancherebbe…) sicché ho dovuto metter mano al suo codice -piccolo hack- per farlo funzionare a dovere.

Prima di tutto, Gengo si aspetta di ricevere la lingua corrente come parametro nella query-string (ad es. ?language=en) che, una volta attivato l’opzione URL rewrite di wordpress -come ho fatto subito-, verrà mostrata nell’URL come un “/en/” aggiunto a sinistra in ogni contesto, per esempio un URL completo sarà:
host/wordpress/2007/02/17/post-title/en/
Questa soluzione, a parer mio e di altri -come ho potuto leggere nel loro Forum- risulta poco gradevole (proprio bruttarella, per dirla tutta).
Visto che al di fuori della sezione d’installazione di Wordpress (/pages/ in questo sito) la definizione della lingua corrente è determinata da un sottodominio (3° livello), it.heracleums.org per la versione italiana e nessun sottodominio (heracleums.org) per quella inglese, volevo che Gengo determinasse la lingua corrente secondo lo stesso criterio.
Questa è la prima modifica rilevante che ho dovuto applicare.

L’altro aspetto da considerare usando Gengo è che -ad oggi- anche nella’ultima versione non supporta ancora WP 2.1! Comunque, da quanto ho potuto vedere questo crea problemi solo quando si vuole assegnare una relazione di traduzioni nella pagina Write/Manage post di WP, associazione che fortunatamente è possibile fare (e funziona!) anche nella pagina “translations” del plugin Gengo.

Un problema sempre collegato all’incompatibilità con WP2.1 accade quando si tenta di reperire le traduzioni del singolo post -il language switch- nel proprio theme: non funge dicendo “No translations” anche quando ne ha in realtà. Il workaround richiede query costanti a mySQL: questo mi ha portato rapidamente a prendere in considerazione l’utilizzo di un plugin di gestione del caching (ne parlerò in seguito).

Tutto il resto funziona inaspettatamente bene, giusto per accennare ad un’altra simpatica feature multilingue: le Categorie, pur essendo un oggetto comune nelle differenti lingue, hanno ciascuna la sua brava traduzione.

Il resto del lavoro riguarda lo sviluppo del custom Theme che deve mostrare un look coerente a quello del sito intero, traduzioni bilingui di messaggi al suo interno -che nella maggior parte dei temi penso siano “schiantate” in inglese nel codice dai loro autori-, gestione flessibile (e variabile di contesto in contesto) degli stili CSS e questioni varie.



3 Responses to “Blog Multilingua”

  1. lrnz Says:

    ciao

    sono alla mia prima esperienza con wordpress…
    sto testando in locale con easyphp la versione 2.2.1 it, tema freshy2 e ultima versione di gengo; pare però che l’abbonamento rss punti sempre alla versione italiana, anche dalla pagina in inglese.
    vedo invece che dalle tue parti la cosa funziona correttamente ;)
    qualche consiglio?
    grazie, buon lavoro
    lrnz

  2. Heracleum Says:

    Ciao lrnz (Lorenzo? :) )
    non so se hai letto il post qui sopra, ma appunto il mio Gengo l’ho dovuto modificare pesantemente soprattutto per quel che riguarda gli url e come Gengo deve dedurre la lingua corrente.
    Quindi funziona perché ci ho dedicato del tempo per far sì che sia Gengo sia Wordpress si comportassero come il resto del sito per dedurre la lingua (il sottodominio di terzo livello, it. = italiano, per gli altri o nessun dominio di 3° livello = inglese [default] ). Oltretutto ho creato un semplicissimo apposito WP Plugin che mi renda tutti gli url interni del blog relativi mentre proprio nei feed RSS deve lasciarli assoluti (non so perché non si comporti così di default WP, mi sembra assurdo).
    In conclusione, temo di non poterti consigliare visto che proprio su questo aspetto ci ho smanettato fin troppo e quindi neanche mi ricordo più qual è il comportamento senza le mie modifiche ;)
    ciao

  3. lrnz Says:

    >(Lorenzo? :) )
    eheh, corretto :)

    grazie comunque per la risposta…

Leave a reply

Allowed XHTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

It sounds like SK2 has recently been updated on this blog. But not fully configured. You MUST visit Spam Karma's admin page at least once before letting it filter your comments (chaos may ensue otherwise).