"Se ci sono due o più modi di fare una cosa,
e uno di questi modi può condurre a una catastrofe,
allora qualcuno la farà in quel modo.

(Edward Murphy)

Come tradurre un tema di wordpress 3.3 (pot-po-mo)

Mar, 07/02/2012 - 00:00 -- arturu
Wordpress

Recentemente in Wordpress 3.3 ho avuto la necessità di tradurre un tema. Dato che il tema era già predisposto per le traduzioni mi sono detto tra me e me "Questa volta finisco in due secondi".

Arturu: non dire sacco se non l'hai nel gatto :)

Come al solito procedo alla traduzione dei file .po e .mo, salvo, e niente nessuna traduzione... :( grrr. Dopo ore e ore ho risolto il problema, è cambiato qualcosina nel codice da inserire nel template. Nell'articolo verrà descritto passo passo come tradurre un tema di Wordpress 3.3, chi è già esperto può saltare subito al paragrafo 2. Spero vi sia utile. Facciamo finta che il nostro template non sia predisposto per le traduzioni, vediamo procedere passo passo.

1. Le label

Come prima cosa racchiudere tutte le stringhe di testo nelle funzioni di traduzione di wordpress:

Name

diventa

_e( 'Name' , 'mio_tema' );

2. Configurazione

Ora bisogna settare correttamente Wordpress per le traduzioni. Controlliamo se in wp-config.php (si trova nella root di wordpress) c'è la seguente dichiarazione:

define('WPLANG', 'it_IT');

altrimenti l'aggiungiamo prima del require. Ora apriamo ed inseriamo in cima a function.php(è nella cartella del template) il codice per attivare il texdomain e caricare il file di traduzione

add_action( 'after_setup_theme', 'mio_tema' );
function mio_tema_setup(){
    $locale = get_locale();
    load_theme_textdomain('mio_tema', get_template_directory().'/lang');
    load_textdomain('mio_tema', get_template_directory() . "/lang/$locale.mo" );
}

Creiamo una nuova cartella dentro la root del template che nomineremo "lang" e gli diamo temporaneamente i permessi 775 (o permessi sufficienti da permettere al webserver di scrivere nella cartella)

3. Generare i file .po e .mo che contengono le traduzioni del tema

Abbiamo due modi per farlo, il primo è usare Poedit per linux ma il modo più semplice è usare il fantastico plugin CodeStyling Localization sviluppato da Heiko Rabe. Il plugin è semplice ed intuitivo, appena installato clicchiamo su:

  • "Strumenti->Localizzazione"
  • scorriamo la pagina fino a trovare il nostro tema da tradurre e in corrispondenza clicchiamo su "Aggiungi una nuova lingua"
  • scegliamo la lingua che ci interessa e clicchiamo su "Crea un file po"
  • in corrispondenza della nuova lingua appena aggiunta clicchiamo su "Ripeti la scansione", poi su "Analizza", appena finisce la scansione su "Finito" e chiudiamo la finestra
  • clicchiamo su "Modifica"
  • traduciamo stringa per stringa cliccando su "Modifica", attualmente le API di google per la traduzione in automatico non funzionano (mi sa che da novembre 2011 google non le rende più disponibili).
  • appena finito clicchiamo su "genera un file mo", se in caso c'è anche un secondo texdomain dobbiamo anche tradurre le stringhe di quest'ultimo e poi generare il relativo file mo.

Abbiamo finito, godetevi le vostre traduzioni, ma prima impostare i permessi della cartella creata precedentemente in 755.

Saluti, Arturu