Tag:

Gengo: switch della lingua

Read this in English
Venerdì, 14 Dicembre, 2007

Noto alcune ricerche provenienti da Google per “language switch gengo” e, visto che in effetti l’ho implementato nel mio theme, è un peccato che gli interessati giungano qui senza trovare una risposta.

Quindi ecco il codice da aggiungere al proprio tema WordPress affinché venga mostrato lo switch di lingua, per leggere lo stesso articolo ma in una lingua differente.
Al momento uso questo codice:
<div class="post_translations" style="float:right">
<?php if (function_exists('the_translations')) the_translations('pre= &post= &title_exists=Read this in ') ?>
</div>

Innanzitutto la parte “if function_exists” permette al tema di funzionare correttamente, senza errori, anche quando il Plugin Gengo viene disattivato per qualche motivo. Il parole povere dice al PHP: se non ti risulta dichiarata e disponibile una funzione di nome “the_translations” allora evita di processare il codice di seguito, ingnorandolo.

La funzione “the_translations” ritorna una stringa che rappresenta il codice HTML per mostrare una lista di traduzioni per il post corrente. Deve essere utilizzato all’interno di “The Loop”.

Io sto usando una unica stringa come parametro, indicandone più d’uno in una “querystring” (param1=valore1&param2=valore2 …).

Dando dei valori a “pre”, “post” e “inner” puoi specificare quali tag HTML dovrebbero essere rispettivamente aperti, chiusi e posti nel mezzo dei vari link alle altre lingue ritornati dalla function.
Visto che questo blog è bilingue (Inglese/Italiano) ne sto usando solo due ovvero non ho bisogno di una “lista” di traduzioni in altre lingue bensì solo un link all’altra -eventuale- lingua disponibile per ciascun articolo. Ecco perché ai parametri pre e post indico come valori uno spazio. Quindi eventualmente apparirà solo un link per operare lo “switch” (cambio) di lingua, senza neanche il bisogno di aggiungere ulteriori tag HTML prima o dopo.

Il parametro “title_exists” indica la scritta da mostrare prima dei/l link, solo nel caso siano associate versioni in altre lingue. Non passando altri parametri (come nel mio caso, riportato sopra) se un post è scritto in un’unica lingua non apparirà nulla, come da mia intenzione.
Altrimenti dovrete aggiungere il parametro “title_none”, indicando la scritta da mostrare in caso di assenza di traduzioni.
Per entrambi i parametri, potrete scrivere una scritta a vostra scelta -in una lingua, come ho fatto io in inglese- altrimenti per entrambi potrete usare, come valore, la keyword ”GENGO_DEFAULT”: questo farà apparire rispettivamente scritte come “Other languages” o “No translations”.

Nel mio caso il risultato viene quindi inserito dentro un DIV (come da codice), con “float” a destra come indicato esplicitamente nello stile “inline” (style=”…”) e per il resto l’aspetto è deciso nel file .css (style sheet) in corrispondenza della class indicata (post_translations) ma questa è un’altra storia.

Il risultato finale del codice riportato è facilmente visibile leggendo singolarmente (non in un elenco dove non faccio comparire lo switch) i miei post.

Sito di Gengo craccato

Read this in English
Martedì, 14 Agosto, 2007

Uhoh… in uno dei primi post penso di aver scritto qualcosa come “ho craccato pesantemente Gengo” ma ovviamente mi riferivo alle mie modifiche al codice del Plugin Gengo per adattarlo al mio sistema di trasporto della lingua nel mio sito.

Sì ma qualcuno ha fatto lo stesso proprio concretamente e al sito stesso di Gengo, oltretutto altrettanto “pesantemente” da quel che si può notare.
Un paio di settimane fà avevo visitato Stoatware (jamietalbot.com) per un eventuale aggiornamento del plugin Gengo e la homepage era tutto un errore anche se il forum girava. Mi sembra di ricordare anche qualcuno che nel forum faceva notare la situazione e Jamie mi sembra rispose che c’era “qualche problemino”.Ora, l’intero sito è craccato / hackato! Homepage, pagina del plugin e forum.
Apparentemente la visita ottiene come risultato una pagina bianca… ma sbirciando il codice html si nota facilmente una raffica di link-spam, cloaccati (cloaked, ovvero “nascosti”) da un tag html invisibile (display:none).

Nell’altro suo sito multilingue wp-multilingual.net c’è una calma piatta (da mesi) nessuna reazione, nessuna notizia (brutte notizie).
Spero (speriamo?) che il sito possa riguadagnare presto la sua “libertà”.

Tags: , , .

Blog Multilingua

Read this in English
Venerdì, 2 Marzo, 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.