In questo tutorial vediamo come predisporre un plugin di WordPress affinchè possa essere tradotto in diverse lingue.

Una volta che il plugin è stato impostato correttamente, altre persone potranno lavorare alla traduzione, senza bisogno di modificare il codice sorgente.

Per semplicità possiamo suddividere processo di localizzazione in quattro parti:

1) Individuazione del dominio di testo del plugin

2) Marcatura di tutte le stringhe da tradurre. Interveniamo nel codice del plugin.

3) Definizione di una cartella (languages) che ospiterà i file con le traduzioni

4) Creazione dei file contententi le stringhe tradotte attraverso l’uso di un software come poedit

È possibile vedere direttamente un esempio funzionante scaricando un plugin creato apposta per questo tutorial. Il plugin non farà altro che inserire un campo di testo (disabilitato) all’interno dell’editor degli articoli. L’input di testo conterrà un titolo e una descrizione disponibili sia in inglese che in italiano.

Download plugin: isw test traduzione

1. Il dominio di testo

Il dominio di testo, o text domain, è l’identificativo unico utilizzato per riferirci alle stringhe del plugin. Il text domain viene definito nell’intestazione del plugin, nel file principale. Vedi esempio sotto.

<?php
/*
 * Plugin Name:       Isw test traduzione
 * Plugin URI:        http://instileweb.com/
 * Description:       Example of how to Localize a WordPress Plugin
 * Version:           0.1.0
 * Author:            instileweb.com
 * Author URI:        http://instileweb.com
 * Text Domain:       isw-test-traduzione
 * License:           GPL-2.0+
 * License URI:       http://www.gnu.org/licenses/gpl-2.0.txt
 * Domain Path:       /languages
 */

2. Marcatura delle stringhe del plugin

Tutte le frasi che verranno mostrate nell’amministrazione devono essere associate al text domain utilizzando uno di due marcatori particolari.

Il doppio underscore __( 'stringa', 'text domain' )

Utilizzato per le stringhe passate come variabili.

        add_meta_box(
            'isw-test-traduzione-meta-box',
            __('The input is disabled', 'isw-test-traduzione'),
            array( $this, 'isw_test_metabox_callback'),
            'post',
            'normal',
            'core'
            );

Underscore seguito da una e _e( 'stringa', 'text domain' )

Per le stringhe che devono essere stampate direttamente a video. Il marcatore incorpora un echo.

<tr>
    <td>
         <input type="text" size="100"  name="test-widget" value=""  disabled/>
         <p class="description"><?php _e( 'Description', 'isw-test-traduzione' ); ?></p>
    </td>
</tr>

3. Definizione della cartella languages

A questo punto dobbiamo dire a WordPress dove trovare le traduzioni delle stringhe. A questo proposito utilizziamo la funzione wordpress load_plugin_textdomain che accetta tre parametri.
Il primo parametro è il text domain, il secondo, deprecato sarà sempre == false, il terzo è l’indirizzo della cartella con le traduzioni.

load_plugin_textdomain( 'isw-test-traduzione', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );

4. Creazione dei file con le traduzioni

Nella cartella languages WordPress cercherà il file della lingua corrente. Se nelle impostazioni generali abbiamo selezionato l’italiano, WordPress andrà alla ricerca del file nome-del-plugin-it_IT.mo. Se il file non è presente saranno mostrate le stringhe originali non tradotte.

I file con estensione .mo non possono essere modificati direttamente in quanto sono file binari compilati a partire da altri file (con estensione .po).

Per creare il file .mo utilizzimo poedit, un’applicazione open source scaricabile a questo indirizzo.

Ecco i vari passaggi da seguire all’interno di poedit.

 

  1. Una volta a perto poedit clicchiamo su nuovo
  2. Inseriamo la lingua della traduzione
  3. nuova-traduzione-poedit

  4. Salviamo la traduzione ‘vuota’ nella cartella languages, con lo schema: nome-plugin-it_IT. Verranno creati due file, uno con estensione .po e l’altro con estensione .mo.
  5. file-traduzione-plugin-wordpress

  6. Clicchiamo su estrai dai sorgentiCome percorso base inseriamo ../ inquanto vogliamo tradurre i file che stanno a un livello superiore rispetto alla cartella languages. Tra i percorsi inseriamo i nomi delle cartelle con i file che contengono del testo. Nell’esempio abbiamo inserito la cartella admin
  7. impostazione-percorsi-poedit

  8. Andiamo nella tab ‘chiavi di ricerca’ e impostiamo i marcatori utilizzati per individuare le stringhe da tradurre
  9. chiavi-di-ricerca-poedit

  10. Ora, per ogni stringa in inglese abbiamo la possibilità di inserire la traduzione in italiano.
  11. traduzione-singole-stringhe-poedit

  12. Una volta terminato salviamo nuovamente. I file .mo e .po verranno sovrascritti.

Affinchè il sistema di traduzione del plugin funzioni, è necessario che sia presente il file .mo. Il file con estensione .po, non è indispensabile e può essere utilizzato come sorgente, sempre all’interno di poedit, per la creazione di altre traduzioni.

Per verificare il corretto funzionamento delle traduzioni andiamo in impostazioni>generali dell’amministrazione di WordPress e cambiamo alternativamente la lingua in italiano e in inglese per verifichiamo che le stringhe presenti del campo di testo varino di conseguenza.


  inStileWeb.com
blog comments powered by Disqus