HOWTO Come tradurre il blog in un altra lingua

Bene, dopo qualche mese il vostro blog inizia a richiamare visitatori, ma volete qualcosa di più e decidete di tradurre il blog, ad esempio, in inglese, per avere visibilità e lettori tra gli anglofoni, fetta importante del traffico internet. Ma come configurare il blog multilingua? Come separare i contenuti italiani da quelli inglesi?

Nota: Il presente articolo suppone che voi stiate utilizzando una piattaforma di blogging Wordpress, installata presso un vostro server, non su wordpress.com.

Esistono diversi plugins per wordpress che permettono di realizzare un blog multilingua, ma nascono alcuni problemi qualora vengano utilizzati altri plugins di terze parti. Ad esempio io utilizzo Ultimate Tag Warrior per gestire i tags, e come tradurli? Come fare in modo che se la pagina è visualizzata in inglese anche la tag cloud viene visualizzata in inglese?

A prima vista l'operazione sembra più complicata del previsto, e per non addentrarci in un campo sconosciuto modificando i plugins installati, ho deciso di realizzare un metodo completamente nuovo per questo tipo di operazione.

Innanzitutto facciamo un breve riassunto di quello che andrò a spiegare. L'operazione consiste nel creare un nuovo blog da affiancare a quello esistente, in tutto e per tutto uguale, ma che usi la lingua inglese. Occorre inoltre creare un nuovo database, presso cui ospitare i dati della versione anglofona. Quindi modifichiamo il template utilizzato per tenere in considerazione due Custom Fields che permetteranno di avere un link tra l'articolo in italiano e quello in inglese.

Creare un nuovo blog in inglese

Per comodità e per velocizzare i tempi è preferibile lavorare in locale, su un server installato sullo stesso computer su cui lavoriamo o in rete LAN. Il metodo funziona ovviamente su qualsiasi server giri Wordpress.
Supponiamo di avere una struttura tipo

sito
|
|-->blog_italiano

Per realizzare la versione inglese la modifichiamo così


sito
|
|-> blog_italiano
|-> blog_inglese

Copiamo l'intera cartella blog_italiano e rinominiamola blog_inglese.
Ora apriamo http://localhost/sito/blog_inglese/wp_admin e modifichiamo la cartella dove si trova Wordpress: aprire il pannello Options, al tab General modificare WordPress address (URL) e Blog address (URL), inserendo il nuovo indirizzo del blog (blog_inglese anzichè blog_italiano).

Ora modifichiamo il file blog_inglese/wp_config.php per fare puntare la nostra installazione ad un database diverso dalla versione italiana, modificando l'espressione define('DB_NAME', 'database_italiano') in define('DB_NAME', 'database_inglese') o qualsiasi nome date al database di supporto per la versione inglese. Se occorre, modificare anche gli altri parametri come login e password.
Per copiare il database in locale effettuiamo dapprima un backup della versione italiana, quindi riversiamo il suo contenuto nel database inglese, in questo modo:


mysqldump -u utente_db -p database_italiano > db.dump
mysql -u utente database_inglese < db.dump

Oppure è possibile procedere alla stessa operazione utilizzando i comandi di phpMyAdmin, se installato.

A questo punto abbiamo un nuovo blog che punta ad un nuovo database.

Ora modifichiamo il template utilizzato, in modo che il blog "parli inglese". Per fare questo - se non esiste già una versione del template tradotta - occorre leggere il codice del template utilizzato e modificare le diciture italiane per trasformare il blog in inglese.
Andare nella cartella sito/blog_inglese/wp_content/themes/template_utilizzato/ e modificarlo.

Inoltre occorre tradurre i vari plugins utilizzati. Ad esempio io utilizzo per il frontend Ultimate Tag Warrior e Sociable ed ho dovuto tradurli in modo da avere un blog completamente in inglese. Niente di particolare, ma va fatto. Per Sociable si può modificare la scritta direttamente da wp_admin, nel pannello options. Per quanto riguarda Ultimate Tag Warrior invece occorre spulciare il codice.
Sempre parlando di Sociable, è una operazione critica avere diversi servizi di social bookmarking per la versione italiana e per quella inglese, infatti lingue diverse portano ad utilizzare siti diversi.

Usare i custom fields per collegare due post tradotti

I Custom Fields sono un meccanismo fornito da Wordpress per assegnare metadata ai post, direttamente dal backend di amministrazione. Ho scritto un post che fornisce ulteriori dettagli sui Custom Fields.

Supponete di avere un blog italiano già avviato (e magari ho indovinato ;-) ), e che vogliate iniziare a tradurlo in inglese: ovviamente non passerete un mese chiusi in casa a tradurre tutti i post che avete scritto dal Pleistocene (ma esiste sto termine?) ad oggi... ma tradurrete magari gli articoli migliori, oppure solo quelli che scriverete in futuro. Come possiamo collegare gli articoli alla loro traduzione, in modo che se non ho traduzione non compare il collegamento? Usiamo i custom fields.

Cerchiamo su Google Images due simpatiche bandierine, una italiana ed una inglese, per realizzare quanto detto sopra, e copiamole in sito/immagini.

Ora prendiamo il blog in italiano. Dobbiamo inserire uno spezzone di codice nei files archive.php, index.php, page.php, search.php, single.php.
(Se usiamo Ultimate Tag Warrior anche in tag.php)
Lo spezzone di codice è il seguente:


<?php
$traduzione_inglese = get_post_meta($id, 'traduzione_inglese', true);
if ($traduzione_inglese != '') {
echo "<a href='".$traduzione_inglese."' class='traduzione_inglese' alt='English Version' title='English Version'></a>";
}
?>

Dove lo inseriamo? All'inizio del nostro post, all'interno del while (have_posts()), all'interno del div con id="post-<??>". Prima del titolo del post è un buon posto, ma potete posizionarlo dove volete all'interno del div del post.
In questo modo per ogni post che compare sulla pagina avrò la verifica dell'esistenza della traduzione.

La stessa cosa occorre farla per la versione inglese, inserendo il codice


<?php
$traduzione_italiana = get_post_meta($id, 'traduzione_italiana', true);
if ($traduzione_italiana != '') {
echo "<a href='".$traduzione_italiana."' class='traduzione_italiana' alt='Versione italiana' title='Versione italiana'></a>";
}
?>

Ora modifichiamo il file CSS che utilizziamo, inserendo le regoline

.box.default a.traduzione_inglese {
width: 30px;
height: 20px;
display: inline;
float: right;
background-image: url(images/english.gif);
}

.box.default a.traduzione_italiana {
width: 30px;
height: 20px;
display: inline;
float: right;
background-image: url(images/italian.jpg);
}

....modificando opportunamente i selettori e i path.

Ora quando traduciamo un post in inglese, possiamo collegarlo al post in italiano semplicemente aggiungendo il custom field traduzione_italiana, e aggiungendo al post in italiano il custom field traduzione_inglese. Verrà visualizzata la bandierina inglese o la bandierina italiana.

Come farlo? Nel pannello Write del backend di amministrazione di Wordpress è possibile vedere, in fondo, una barra denominata "Custom Fields". Cliccare il +, inserire nel campo Key "traduzione_italiana" o "traduzione_inglese" a seconda del contesto e in value inserire il permalink dell'articolo correlato.

In questo modo abbiamo realizzato un blog multilingua che tiene separati i contenuti ma permette comunque di tenerli correlati.

Tags: , , ,

4 Commenti al post “HOWTO Come tradurre il blog in un altra lingua”

  1. diggita.it Says:

    HOWTO Come tradurre il blog in un altra lingua…

    Bene, dopo qualche mese il vostro blog inizia a richiamare visitatori, ma volete qualcosa di più e decidete di tradurre il blog, ad esempio, in inglese, per avere visibilità e lettori tra gli anglofoni, fetta importante del traffico internet. Ma come…

  2. Copes Flavio Says:

    Ho notato che con Safari e Camino in questo modo non vengono visualizzate le icone bandiera.

    Per modificare il tutto in modo che sia compatibile tra i vari browsers, modificare il codice in

    <?php
            $traduzione_inglese = get_post_meta ( $id, 'traduzione_inglese', true ) ;
            if ( $traduzione_inglese != '' ) {
            echo "<a href='".$traduzione_inglese."' class='traduzione_inglese' alt='English Version' title='English Version'><img src='http://www.copesflavio.com/images/english.gif' /></a>";
                         }
                    ?>

    ed il CSS diventa

    a.traduzione_inglese {
    width: 30px;
    height: 20px;
    display: inline;
    float: right;
    }

  3. Ultime dal fronte WordPress 15-2008 Says:

    [...] Performancing ha pubblicato un interessante articolo con 28 modi per usare i custom fields di WordPress. Qualche tempo fa ho scritto come usare i custom fields per tradurre il blog. [...]

  4. Andrea Says:

    Ciao, complimenti per l’idea, volevo chiederti se mica sai come si potrebbe fare per utilizzare questo codice per inserire un determinato banner all’interno di un articolo?

Lascia un commento

Nome (obbligatorio)

Mail (non sarà pubblicata) (obbligatoria)

Sito web