Come tradurre e localizzare un plugin wordpress

Come tradurre e localizzare un plugin wordpressTi sarà sicuramente capitato di trovare un plugin in lingua inglese che non possiede la traduzione in italiano.
Se questo plugin aggiunge delle parole nel blog, come ad esempio la parola “Author“, ovviamente queste saranno in inglese, effetto non molto bello per un blog italiano!
Vediamo subito come tradurre una volta per tutte il plugin direttamente in italiano o nelle lingua desiderata tramite Poedit.
I file di localizzazione (della lingua) di wordpress sono di tre tipi: i .POT (Portable Object Template) i .PO (Portable Object) e i .MO (Machine Object).
I file .POT contengono le stringhe di testo traducibili, sono quindi la parte fondamentale che dovrà essere fornita dallo sviluppatore del plugin. Il file .PO è la traduzione vera e propria delle parola in lingua originale. Infine il file .MO è la versione compilata della traduzione.
Ora ti puoi trovare davanti a due tipi di plugin:

Il plugin è ben fatto

Se un plugin è ben fatto, avrà nella sua cartella i file di localizzazione in inglese, ovvero i file .POT oppure il file .PO. Come lavorare sulla cartella del plugin? Semplicemente scaricandola dallo spazio web sul tuo pc, segui questa guida.
Una volta che hai la cartella del plugin a portata di mano, scarica e installa Poedit, un semplice ed ottimo editor che permette di modificare i file di localizzazione. Ora apri il file .POT, oppure se non è presente, copia il file .PO e rinominalo sostituendo il riferimento della lingua del file con it_IT ( ad esempio un file in lingua inglese è en_US.po, te lo devi copiare e lo rinominare con it_IT.po ).
Ti comparirà una schermata divisa in due colonne, a sinistra trovi le parole da tradurre, mentre a destra compariranno la parole che sono state tradotte.

poedit come funziona radurre wordpressNella parte inferiore, trovi due righe, nella prima c’è la parola che hai selezionato e che vuoi tradurre, nella seconda devi digitare la traduzione!
Ora salva tutto, Poedit creerà automaticamente il file .mo e. po, non dovrai far altro che caricare i nuovi file sullo spazio web e vedrai il plugin localizzato in italiano!

Ho visto plugin migliori!

Assicurati che il tema sia localizzabile e cioè che nei file del tema le scritte in inglese siano precedute da __ oppure da _e , ad esempio:

<?php echo __('About the author', 'authorbox'); ?>

Se non è presente in questo formato, allora il plugin non è attualmente localizzabile, wordpress non riuscirà a capire quali sono le parole da tradurre e non le tradurrà!
Allora procedi in questo modo:
Aggiungi questo codice in functions.php del tema (oppure in un file php del plugin):

load_plugin_textdomain('nome-plugin', false, dirname(plugin_basename(__FILE__ )));

Sostituisci nome-plugin con il nome del plugin. Poi cerca tutte le parole che vuoi tradurre all’interno dei vari file del plugin; solitamente sono visualizzate semplicemente tramite una echo, tipo:

<?php echo 'Parola da tradurre'; ?>

e usa __ per renderle localizzabili e quindi traducibili, sostituendo il codice qui sopra con:

<?php echo __('Parola da tradurre', 'nome-plugin'); ?>

Può essere un lavoro lungo, ma ne varrà la pena.
Se vuoi, invia la traduzione al creatore del plugin, aiuterai tantissime altre persone e spesso verrà inserito un tuo link all’interno della homepage del plugin.

Se il plugin non presenta i file di localizzazione tipo il file .POT, allora dovrai creare te un file .PO, aggiungere le parole che dovranno essere tradotte e poi salvarlo con estensione .POT. Dopodichè traduci le parole, salva tutto, Poedit creerà automaticamente il file .mo e. po, non dovrai far altro che caricare i nuovi file sullo spazio web e vedrai il plugin localizzato in italiano!

 

Ovviamente puoi anche modificare tutte le parole del tema a mano andando a sostituirle direttamente nei file del tema, ma questo non è un lavoro ben ottimizzato. Perchè? Semplicemente perchè se poi avessi bisogno di cambiare lingua al tuo blog, dovresti ricambiare nuovamente tutte le parole, mentre con i file di localizzazione .PO e .MO, fa tutto in automatico in 1 secondo!
Inoltre tramite i file di localizzazione hai tutte le parole modificabili in un solo file, sarà più semplice gestirle.

VUOI CREARE IL TUO SITO O BLOG WORDPRESS?

Scegli uno tra i migliori hosting per WordPress

HOSTING

Scegli uno tra i migliori hosting per WordPress

Hosting

Scegli uno tra i migliori temi WordPress professionali

GRAFICA

Scegli uno tra i migliori temi WordPress professionali

Grafica

Guide e risorse per gestire il sito WordPress a 360°

GESTIONE

Guide e risorse per gestire il sito WordPress a 360°

Gestione
  
con le dita sempre in costante, frenetico movimento sulla tastiera… vengo spesso trascinato e catturato “in rete” per colpa delle mille idee che mi girano per la testa (prima o poi troverò quella giusta)… dal futuro incerto (nonostante una laurea, e chi non lo è?..siamo in tanti!) .. credo fortemente nella condivisione della conoscenza!
32 Commenti
  • Ciao Roberto,

    a proposito di traduzioni…. c’è un modo per tradurre un modello di template di WP? Molte parti sono riuscita a tradurle andando a ritrovare le varie sezioni nell’editor ma altre non riesco a individuarle.
    Grazie

    • Ciao Cri,
      la cosa migliore da fare è localizzare il tema utilizzando l’editor Poedit (il procedimento è identico a quello che trovi in questo post, solo che devi applicarlo al tema).

      Se invece il tema non è predisposto per la localizzazione, ovvero (in parole povere) se non trovi in file en_US.po nella cartella del tema, allora puoi:

      1. predisponi te il tema aggiungendo prima del testo echo __(‘testo’, ‘nome del tema’); … vedi la sezione “Ho visto plugin migliori” per comprendere questo passaggio.

      2. Cerchi in ogni file del tema (ti consiglio di scaricarlo sul tuo pc, perchè dall’editor di WP non vedi alcuni file) e fai una traduzione di tutte le parole (però se poi volessi tornare all’inglese in un futuro, dovrai ritradurre di nuovo tutto).

      • Nella cartella del tema, in languages, c’è questo file:
        en_US.po

        devo usare questo? Se sì, lo scarico nel mio Mac e poi lo apro con Poedit. Dopo procedo come hai scritto nel tuo articolo, avrò così un file nominato it_IT.po che dovrò caricare nello spazio web, nella cartella languages. Ho detto giusto?
        Il file in ita deve sostituire en_US.po non è che nella cartella languages ci possono stare entrambi, vero?
        Grazie

        • Hai detto bene, apri en_US.po, lo traduci in italiano e lo salvi con nome in it_IT.po . Poi lo carichi nella stessa cartella di dove c’è en_US.po (non serve sovrascriverlo od eleminarlo). Ci penserà poi WP ad andare a prendere il file giusto, a seconda della lingua che hai impostato per WP.

          • Ho seguito il procedimento e caricato i due file (.mo e .po) nella cartella dove c’è il file originale ma….-:( non è cambiato niente! Come è possibile? 😕

          • Sei sicura di aver caricato i file modificati?

            Se sì, scarica il file wp-config.php che trovi nella root del tuo spazio web, e controlla che lingua hai impostato in define(‘WPLANG’, … ) . Se non c’è it_IT, allora inseriscilo tra gli apici

  • Ciao e complimenti sia per l’articolo che per il blog.
    Ho fatto la localizzazione del tema e non ci sono problemi a parte che quando salvo il file mi dice che ci sono tre errori.
    Quando vado ad aprire il blog vedo che ha tradotto tutto a parte 3 cose, che penso siano quelle dell’errore. Cosa posso fare?
    grazie

    • Anche per te vale che alcune parole possono non essere state formattate per essere localizzabili, allora ti conviene tradurle te a mano direttamente nei file, oppure le formatti (soluzioni migliore) come è spiegato nel post.

  • Sì, sì i file sono quelli giusti. Ho provato ad eliminari e re-installarli nuovamente. Adesso funziona…anche se in parte, non capisco perchè alcune parole non me le traduce, eppure nel file .po io le ho tradotte (es. mi ha lasciato No Comments invece di Nessun Commento). Boh!

    • Dipende, alcune parole non sono state formattate per essere tradotte, allora ti conviene tradurle te a mano direttamente nei file, oppure le formatti (soluzioni migliore)

  • Ciao Roberto.
    Intanto grazie, perché non conoscevo POedit 🙂
    Ho un tema che praticamente è tutto tradotto, tranne alcune sporadiche frasi. Ho visto sul it_IT.po non c’è però quella specifica voce. Speravo che POedit avesse anche la possibilità di aggiungere una nuova voce, ma non mi sembra (correggimi se sbaglio) quindi volevo provare a farla a mano. Ho identificato la linea e il file php delle frasi non tradotte, dimmi se è corretta questa procedura. Poi se vuoi, e se corretta, la puoi anche integrare nel tuo articolo 😉


    #: nomefile.php:99 <- numero della linea php
    #, php-format
    #@ il codice specifico del tema
    msgid "La frase non tradotta"
    msgstr "La frase tradotta"

    Poi immagino che devo riaprirlo con POedit per compilare il it_IT.mo: che dici?
    Ciao e grazie. Matteo.

    • Ciao Matteo,
      ti consiglio di non fare cose strane 🙂
      Praticamente basta aggiungere delle nuove voci nel fil di .pot … Leggi qui: betterwp.net/wordpress-tips/create-pot-file-using-poedit/ … poi aggiorni il file .po italiano e ti ritrovi le nuove parole… ovviamente devi aggiungere a mano il codice per far capire a WP che deve tradurre quella parola, sarà tipo: ” __( “

      • Ciao Roberto,
        in realtà non dovrebbero essere proprio stranissime: ho preso quello che è scritto sul “Message Format” dei file .po sul codex di WP, ma volevo chiederti un parere prima di un test sul campo, che certamente condividerò con te 😉
        Le frasi non tradotte sono già pronte perché hanno già il
        printf( __( '
        davanti, ma non è presente il file .pot e se dovessi crearlo nuovo vuoto mi perderei le centinaia di frasi già tradotte… cosa che vorrei evitare 🙂
        Ecco perché volevo aggiungere solamente le 4 o 5 frasi non tradotte. Non ho capito se aggiornandolo dai sorgenti (Update from source) mi cancella o no le voci precedentemente già tradotte.
        Grazie della risposta! Ciao, Matteo

        • No, te le “AGGIORNA” 🙂 Ti aggiunge quelle nuove e basta, molto comodo…

          • Grande Roberto grazie! In effetti update vuol dire aggiorna… ma sai fidarsi é bene, ma di Roberto Iacono è meglio 😉
            Appena ho letto la tua cortese risposta ho subito provato e ho notato 3 cose:
            1) alcune voci le considera obsolete, e quindi le ha automaticamente escluse (senza la possibilità di salvare da qualche parte cosa ha tolto). Confrontando il .po uscito con quello originale ho notato che alcune voci sono reali, quindi pensavo di aggiungerle a mano nel file .po, ma non so se le devo mettere in un posto specifico. Forse no intanto poi viene compilato in .mo?
            2) la 1° sintassi iniziale di ogni voce POedit l’ha modificata da #@ ab a # @ cc insomma ci ha aggiunto uno spazio tra il # e la @ su ogni voce. Mi chiedo se questo non da fastidio al tema.
            3) molti dei riferimenti alle linee dei vari php non sono le stesse dell’originale. POedit non mi ha comunicato queste variazioni. Spero (dimmi se sbaglio) che in realtà ad un aggiornamento del tema NON è stato aggiornato il file di traduzione… no comment 🙂
            Grazie!
            P.S. noto che la data del commento mi sembra di un ora indietro. Forse è da sistemare il GMT? Spero di esserti anche io stato utile.

          • In effetti, l’orario era indietro 🙂 Grazie

            1. esatto, la posizione non è importante se utilizzi lo stesso file .po per creare il file .mo, che poi andrai ad utilizzare nel blog.

            2. questo non mi è mai capitato, come mai hai quei caratteri e non quelli standard? Qui ti posso solo dire di provare (magari solo per un minuto giusto per capire se funziona o meno), se una volta caricato le traduzioni si vedono tranquillamente, sai che non dà problemi al tema…

            3. certo che può essere! Mica hanno tempo da perdere per aggiornare le traduzioni 😉

            Ciao
            Roberto

          • Figurati, l’avevo notato e te lo ho subito detto. Scusa il ritardo. Magari quando ho tempo ci provo. Forse nel linguaggio di programmazione po il # non seguito dai : è un semplice commento. Sembra un semplice modo per dire che quel .po è stato fatto per quel determinato tema, con la sigla cc. Nel mio commento ho erroneamente scritto ab -> cc in realtà rimane sempre cc anche nell’uscita, l’unica differenza è lo spazio tra il # e la @ su ogni voce.

            Ti faccio un esempio:
            #@ cc
            #: index.php:64
            msgid "Not Found"
            msgstr "Non Trovato"

            la prima riga diventa # @ cc.

            Un’altra “curiosità”, che non è del tema (penso BP) e che non saprei però proprio come tradurre è che alle volte su un gruppo scrive “attivo 3 giorni, 16 ore fa fa” e altre volte non mette il doppio fa. Fa fa ridere, ma non non è professionale 🙂

            Ciao. Matteo

          • Ciao Matteo,
            partiamo dal presupposto che il computer fa quello che gli diciamo, quindi il fa fa (molto bello :)) è un tuo probabile errore, ricontrolla le traduzioni e/o la parte originale in inglese, magari è “sbagliato” proprio il codice iniziale del plugin.

  • Ciao ho tradotto con poedit il file plugin wp_auctions.po e l’ho inviato nella cartella locales dove l’ho prelevato senza cambiare nome senza nessun risultato mi puoi spiegare passo passo cosa fare?
    Non sono molto pratico grazie

    • Roberto Iacono

      Ciao Maurizio,
      La cartella è languages, non locales. Se vuoi, segui questa guida ma ragionando in plugin (e non in tema).

      • Roberto grazie di tutto sei stato molto gentile cmq penso che non posso fare nulla perchè la cartella languages non esiste ho sfogliato tutte le cartelle del sito con filezilla l’unica cartella contenente il file wp_auctions.po con tutti i termini in inglese che devo tradurre sono in questo file nella cartella locales grazie ciao

  • Ciao Roberto complimenti per il blog e per le ottime spiegazioni 🙂
    Avrei bisogno di chiederti una cosa perpiacere, io uso wp-mingle (un plugin social per creare una bacheca e scambio di messaggi privati), ho tradotto tutto a mano il plugin, ho scoperto solo oggi questo articolo peccato 🙁 della mia traduzione funziona tutto tranne le date presenti nella parte dei messaggi privati eppure ho sostituito mesi, giorni ecc in tutti i file dove ho trovato riferimento a date ma nulla li continua ad essere cosi mica sapresti dirmi che mi conviene fare in questo caso perpiacere?

    • Roberto Iacono

      Ciao Giovanna,
      WordPress è localizzato in italiano? (il pannello di amministrazione è in italiano?)
      Se sì, allora devi cercare il punto esatto che genera la data, leggi https://www.robertoiacono.it/come-dove-modificare-wordpress/. Altrimenti localizza WP in italiano e dovrebbero andare a posto anche le date.

  • Perdonami se ti rompo sempre le scatole Roberto ma mi togli sempre le castagne dal fuoco, sei un grande. Non ho capito alcune cose installando questo plugin.

    1) ho wordpress in inglese e me lo scarica in inglese, se lo voglio in italiano?
    2) quando la gente si iscrive, nel modulo di gestione dei commenti, l’iscrizione va in “sospeso” e non me la fa attivare. Mi sa che mi manca qualche passaggio…?
    3) Il link per iscriversi senza commentare non mi funziona, nella gestione dell’url w ww…../comment-subscriptions devo aggiungere qualcosa? (infatti dice che Il permalink per la tua pagina di gestione (qualcosa di simile a / manage-abbonamenti o /? page_id = 345 ). Questa pagina non esiste effettivamente nel sistema, ma il suo legame deve seguire la struttura dei permalink.)

    • Scusa ho sbagliato pagina, mi riferisco al plugin SUBSCRIBE TO COMMENTS RELOADED

    • Roberto Iacono

      🙂

      1. Leggi https://www.robertoiacono.it/come-localizzare-wordpress-tradurlo-in-italiano-da-altre-lingue/

      2. hai controllato le impostazioni? Se ripristini tutto allo stato originale, cosa succede?

      3. Hai controllato le opzioni di Pagine di Gestione? Deve essere attiva l’opzione: Pagina di gestione virtuale. Il link è corretto.

  • Ciao Roberto,
    vorrei completare le traduzioni in ita del CRM CiviCRM

    ho installato Poedit
    ho modificato il file da .mo a .po

    ma non riesco ad aprire il file.po

    • Roberto Iacono

      Ciao nat,
      i file .po si aprono con poedit, non devi modificare il file da .mo a .po, il file .mo viene creato da poedit.

  • Ciao! Se sei interessato a tradurre un tema o un plugin WP, vi consiglio caldamente http://poeditor.com/ È possibile scaricare un modulo di WordPress qui: http://wordpress.org/extend/plugins/poeditor/

  • Ciao Roberto, il tuo blog e i tuoi articoli sono fatti benissimo!!!! Ho iniziato a utilizzare wordpress seguendo la tua “guida” 🙂 e i progressi fatti sono anche merito tuo! Ora mi sono imbattuta in un problema che non riesco a risolvere. Localizzare il plugin wp-customer-reviews che non prevede le traduzioni.
    Ho seguito tutti i passaggi senza risultati.
    ho creato la cartella lang nella dir del plugin
    ho inserito la funzione
    function wpcrp_init() {
    load_plugin_textdomain( ‘wp-customer-reviews’, false, dirname( plugin_basename( __FILE__ ) ) . ‘/lang/’ );
    } nel file php del plugin; se aggiungo solo il comando load_plugin_textdomain … il sito va in errore,
    ho utilizzato poedit per fare le traduzioni creando i file wp-customer-reviews-IT_it.po e .mo.
    ho tradotto ad esempio unvariabile in questo modo: $buttom_msg = __(‘Click here to submit your review.’, ‘wp-customer-reviews’), ma nessuna traduzione.

    che cosa sbaglio?

    Ti ringrazio già da ora anche per la tua pazienza nel leggere il mio messaggio!!
    ciao
    Angela

    • Roberto Iacono

      Ciao Angela,
      prova a rinominare la cartella in languages e poi:

      load_plugin_textdomain( ‘my-plugin’, false, dirname( plugin_basename( __FILE__ ) ) . ‘/languages/’ );

      Mi pare che l’hook ‘plugins_loaded’ sovrascriva quella del plugin, non riesci ad inserire il codice all’interno da un’altra parte (magari nella funzione che usa il plugin per agganciarsi)?

  • Ciao Roberto, grazie per il suggerimento, ora provo e ti faccio sapere.

    Ciao
    angela