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¶m2=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.