Utilizzando questo sito accetti il nostro uso dei cookie. Approfondisci

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

EMAIL NEWSLETTER

Vuoi ricevere i miei ultimi articoli
comodamente nella tua email? È gratis!
Ben 3552 persone lo stanno già facendo!
Anonimo
   
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
  • Cri

    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

    • Roberto

      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).

      • Cri

        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

        • Roberto

          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.

          • Cri

            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? 😕

          • Roberto

            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

  • Enrico

    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

    • Roberto

      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.

  • Cri

    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!

    • Roberto

      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)

  • Matteo

    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.

    • Roberto

      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: ” __( “

      • Matteo

        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

        • Roberto

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

          • Matteo

            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.

          • Roberto

            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

          • Matteo

            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

          • Roberto

            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.

  • Maurizio

    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).

      • Maurizio

        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

  • Giovanna

    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 http://www.robertoiacono.it/come-dove-modificare-wordpress/. Altrimenti localizza WP in italiano e dovrebbero andare a posto anche le date.

  • Francesco

    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.)

    • Francesco

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

    • Roberto Iacono

      :)

      1. Leggi http://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.

  • nat

    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.

  • summ3r

    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/

  • Angela

    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)?

  • Angela

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

    Ciao
    angela

Seguimi

Scarica gli ebook gratuiti

Vuoi creare e gestire il tuo blog WordPress autonomamente ed in maniera gratuita?

Allora scarica gratuitamente gli ebook Blogging Box e Le 30+ cose da non fare con WordPress, inserisci la tua email qui sotto:
13603+
Scarica gratuitamente gli ebook!

Per maggiori informazioni guarda questa pagina per la Blogging Box e questa per le 30+ cose da non fare con WordPress.

Scarica gli ebook gratuiti

Vuoi creare e gestire il tuo blog WordPress autonomamente ed in maniera gratuita?

Allora scarica gratuitamente gli ebook Blogging Box e Le 30+ cose da non fare con WordPress, inserisci la tua email qui sotto:
13603+
Scarica gratuitamente gli ebook!

Per maggiori informazioni guarda questa pagina per la Blogging Box e questa per le 30+ cose da non fare con WordPress.
Unisciti agli oltre 10999 lettori
che seguono questo blog
3152
982
2251
4614