Creare siti multilingua con WordPress e Qtranslate

Se siete dei fedeli utilizzatori di wordpress e state cercando un modo veloce per aggiungere la gestione di contenuti in più lingue, vi suggerisco di provare qtranslate (http://www.qianqin.de/qtranslate/), plugin per wordpress che permette la gestione di più lingue per contenuti differente.

Per installarlo, scaricate il plugin nella versione compatibile alla vostra installazione di wordpress (potete rintracciarlo nel repository di wordpress plugin (http://wordpress.org/extend/plugins/qtranslate/)), copiate la cartella del plugin in wp-content/plugin e attivate il plugin dal pannello di amministrazione.

A questo punto verrà aggiunta la voce “lingue” (o “languages”) nel menu di amministrazione.
Da questa sezione è possibile gestire quante e quali lingue si desidera utilizzare per il proprio sito, definendone l’ordine e la lingua di default oltre ad opzioni sulla gestione dell’url per i contenuti multilingua e il tracciamento della lingua dell’utente dal browser.

Una volta impostate le varie opzioni è possibile gestire categorie, pagine ed articoli come contenuti multilingua direttamente dal pannello di amministrazione.

La gestione delle lingue di qtranslate è basata sui tag multilingua, che consentono di definire contenuti diversi in base alla lingua all’interno del sito. Questo procedimento è automatizzato per titoli e testi ma va definito a mano nel caso di testi per allegati e in alcuni casi per i custom menu.

<!--:en-->English text<!--:-->
<!--:it-->Testo in italiano<!--:-->

In base alla lingua selezionata verrà restituito come output solo il contenuto pertinente alla specifica lingua.

Nel caso incontriate la necessità di gestire il codice in maniera customizzata all’interno di funzioni o del tema è possibile utilizzare le API di Qtranslate per l’esecuzione dei tag.

__(<!--:en-->English text<!--:-->
<!--:it-->Testo in italiano<!--:--> );

Per valutare la lingua selezionata è possibile utilizzare qtrans_getLanguage() ed ottenere l’abbreviazione univoca della lingua scelta dall’utente.

if(qtrans_getLanguage() == "it"){
echo "testo italiano";
}else{
echo "english text";
}

Per ottenere la navigazione tra le lingue viene offerta la funzione qtrans_generateLanguageSelectCode().
Questa permette l’output di una lista o un dropdown con le varie lingue selezionabili dall’utente.
Tra le opzioni è possibile scegliere il tipo di output: lista con testo, lista con bandiere, lista con testo e bandiere oppure un select.

qtrans_generateLanguageSelectCode("image");
//lista lingue con immagini delle bandiere

Qtranslate fornisce di default le bandiere, i nomi e le abbreviazioni per le varie lingue, che sono ovviamente customizzabili a piacimento. Una soluzione rapida per la modifica delle immagini delle bandiere è l’utilizzo di css sprite basato sulle classi della lista di default.

#qtranslate-chooser li a.qtrans_flag{
background:#FFF url(images/flags.png) 0 0 no-repeat;
width:20px;
height:20px;
display:block;
}
#qtranslate-chooser li a.qtrans_flag_it{background-position:0 0;}
#qtranslate-chooser li a.qtrans_flag_en{background-position:0 -20px;}
#qtranslate-chooser li a.qtrans_flag_de{background-position:0 -40px;}
#qtranslate-chooser li a.qtrans_flag_fr{background-position:0 -60px;}

Un limite riscontrato nella gestione dei contenuti multilingue su wordpress attraverso qtranslate è il fatto di non poter definire allegati differenti per lo stesso contenuto in base alla lingua. Per aggirare questo ostacolo è possibile definire come testo alternativo o come excerpt dell’allegato l’abbreviazione della lingua e valutare questo parametro nel momento dell’output.

Di seguito un esempio per ricavare le immagini allegate ad una pagina solo per una specifica lingua.

<?php
$my_id = get_the_ID();
 $args = array(
'post_type' => 'attachment',
'post_parent' => $my_id,
'orderby' => 'menu_order',
'order' => 'asc'
);
 $attachments = get_posts($args);
 if ($attachments) {
   foreach ($attachments as $attachment) {
     if($attachment->post_excerpt == qtrans_getLanguage()){
       echo "<img src='".$attachment->guid."'/>";
     }
   }
}
?>

Come ultima nota suggerisco una visita al sito dell’autore del plugin (http://www.qianqin.de/qtranslate/) e al forum (http://www.qianqin.de/qtranslate/forum/), nel caso vogliate espandere le potenzialità di qtranslate potete testare altri plugin che permettono gestioni più avanzate per specifici ambiti (meta tag, buddy press, sitemap) sul repository di wordpress plugin (http://wordpress.org/extend/plugins/search.php?q=qtranslate).

Info su Mauro Accornero

Sviluppatore e Web Designer Freelance, lavora a Milano dove collabora con Agenzie di Comunicazione ed Aziende del settore. Docente presso la Nuova Accademia di Belle Arti a Milano dove tiene corsi in ambito web per il dipartimento di Graphic Design e Art Direction.
Questa voce è stata pubblicata in Tutorial e contrassegnata con , . Contrassegna il permalink.

6 risposte a Creare siti multilingua con WordPress e Qtranslate

  1. Lauryn scrive:

    ciao mauro,
    anche io usavo Qtranslate all’inizio. Ma devo ammettere che la mia migliore esperienza ora è con http://wpml.org/ che ti permette di tradurre automaticamente anche plugin e parti del template. La gestione è molto più pratica e senza errori. Provalo!

  2. Mauro Accornero scrive:

    Ciao Lauryn,

    ho visto e sembra interessante, non ho capito la differenza tra i pacchetti a pagamento che fanno scaricare dal sito e quello che si trova nel repository di wordpress plugin (http://wordpress.org/extend/plugins/sitepress-multilingual-cms/), credo sia una differenza di versione sul repository c’è la 2.0.4 mentre sul sito si parla della 2.1.0 (http://wpml.org/2011/02/wpml-2-1-0/). Me lo scarico così vedo come funziona e vedo che cosa offre, grazie della segnalazione!

    • Quella nella directory di wordpress è appunto la vecchia versione, non più aggiornata (se non per alcuni bug di sicurezza) e mantenuta.
      Da febbraio rilasciano il codice sorgente (licenza sempre GPL) sotto pagamento, con due opzioni commerciali.

  3. Kiko scrive:

    Concordo fermamente con @Lauryn: WPML è migliore perché separa completamente i contenuti!

  4. davide scrive:

    questo qtranslate e molto bello pratico, ma come faccio a metterlo nel menu della home??? non al lato
    grazie

  5. Mauro Accornero scrive:

    Con qtrans_generateLanguageSelectCode(); ottieni una lista delle lingue selezionabili (ul li a con link ad ogni lingua). Il link che viene restutuito dipende dall’impostazione delle url per la lingua nel plugin, se devi aggiungere una voce con un custom menu potresti aggiungere un link con url http://www.website.com/?lang=it o http://www.website.com/it a seconda delle impostazioni delle url che setti da wordpress per questo plugin.

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>