Tradurre WordPress: come sostituire alcune porzioni di testo

Tradurre WordPress con filtro gettext

A volte, durante lo sviluppo di un sito con WP, potresti avere l’esigenza di cambiare solo alcuni testi specifici. Non stiamo parlando di tradurre WordPress per i siti multilingua, cosa che si può realizzare attraverso l’utilizzo di plugin come Weglot (gratuito) o WPML (a pagamento), ma del caso in cui ci accorgiamo che alcune parole (in lingua originale o addirittura già tradotte nella nostra lingua) vanno modificate per rendere meglio il significato di quello che vogliamo trasmettere all’utente.

Uno dei metodi più corretti, se non si vuole essere costretti a ricorrere all’uso di plugin, sarebbe quello di modificare direttamente i singoli termini all’interno dei file .po (e il relativo file .mo generato) utilizzando un software come Poedit (se non sai di cosa si tratta segnalamelo nei commenti e pubblicherò un articolo dedicato a questo). A volte pero’ anche questo metodo può risultare macchinoso e lungo, e se le parole da modificare sono poche, può convenire aggiungere queste semplici righe di codice all’interno del file functions.php del nostro child-theme:

add_filter('gettext', 'blogwpTraduzioneWordPress');
add_filter('ngettext', 'blogwpTraduzioneWordPress');
function blogwpTraduzioneWordPress($stringaDaTradurre) {
    $stringaDaTradurre = str_ireplace('Frase esatta da tradurre', 'Frase tradotta', $stringaDaTradurre);
    return $stringaDaTradurre;
 }

Dove ti basterà modificare le due frasi all’interno della funzione PHP str_ireplace() con il il tuo testo per ottenere il risultato desiderato.

Attenzione però: sebbene questo metodo sia molto semplice e pratico, ti raccomando di utilizzarlo il meno possibile e solo quando devi tradurre poche porzioni di testo. Il filtro “gettext” infatti, per come è progettato, fa una scansione di tutti i file di traduzione per ogni stringa che vuoi tradurre. Quindi può andare bene per una decina o una ventina di stringhe, ma non certo per centinaia o addirittura migliaia di esse. Per questo motivo, se la necessità di tradurre completamente tutti i testi di un plugin o di un tema che non ha la traduzione nella lingua desiderata, è meglio trovare altre soluzioni (come dicevo sopra, plugin come WPML, qTranslate possono funzionare bene, o ancora meglio è possibile intervenire direttamente sui file di traduzione).

Per ulteriori approfondimenti è possibile visitare direttamente il codex di WordPress.

Se invece hai qualche dubbio su questo procedimento o vuoi maggiori informazioni su come tradurre WordPress in generale, non esitare a lasciare un commento sul post, oppure contattami attraverso il contact form presente nella pagina contatti.

9 commenti
    • Massimiliano
      Massimiliano dice:

      Ciao Jimmy,

      Non si usano i CSS per tradurre delle stringe, ma puoi usare il metodo che ho descritto in questo articolo.

      E’ vero che, con i CSS, si possono inserire dei simboli particolari prima o dopo alcuni elementi.

      Ad esempio, per inserire il simbolo “tilde”, prima di ogni testo che contenta un numero, si potrebbe creare una classe speciale (ad esempio “class-approx-number”), mettere tutti i numeri dentro uno span a cui viene assegnata quella classe (ad esempio <span class=”class-approx-number”>123</span>) e poi inserire una regola CSS tipo questa:

      .class-approx-number:before {
      content: '~';
      }

      In questo modo, tutte le volte che scriverai un numero (ma in generale anche un testo) all’interno di uno span con quella classe, verrà inserito in automatico il simbolo tilde prima del numero.

      Giocando con questo tipo di regole CSS potresti anche arrivare a riuscire a sostituire delle intere stringhe (ad esempio nascondendo la stringa originale con la regola “display:none” e poi inserendo la nuova stringa con gli pseudo-elementi :before e :after, tuttavia lo trovo un modo alquanto macchinoso e sicuramente non sempre realizzabile. Non vale la pena.

      Se non programmi in PHP, ti consiglio di usare un plugin gratuito come Weglot. Oppure se proprio non vuoi usare dei plugin, puoi scrivermi sulla pagina contatti per prenotare una consulenza, indicandomi qualche dettaglio in più.

      Ciao e buon lavoro!
      Massimiliano

      Rispondi
  1. roberto

    Li dove nessun plugin era riuscito, con questo piccolo codice sono riuscito a tradurre una parte del tema che mi dava noia da mesi. Grazie!!!

    Rispondi
    • Massimiliano De Stefano
      Massimiliano De Stefano dice:

      Ciao Roberto,

      Mi fa molto piacere che ti sia stato utile!

      Proprio per questo, al fine di aiutare altre persone ad evitare di rimanere bloccati per mesi e a trovare da subito una soluzione semplice ed efficace, se ti va e se ti fa piacere, metti un like sulla pagina e condividi l’articolo su Facebook!

      Buona giornata e buon lavoro,
      Massimiliano

      Rispondi
  2. luca chirico
    luca chirico dice:

    Ciao, mi chiedevo se fosse possibile fare in modo che una sola porzione di testo contenuta nella descrizione breve di un prodotto woocommerce possa essere sostituita…

    Ad esempio

    ISBN 977XXXXXXXXX diventi => ISSN 977XXXXXXXXX

    Rispondi
    • Massimiliano De Stefano
      Massimiliano De Stefano dice:

      Ciao Luca,

      Temo di no. Credo che, con il metodo che indico qui, si possano tradurre solo quelle stringhe che vengono “localizzate” da WP, che passano quindi all’interno di funzioni come __(), _e(), e con un loro textdomain. Non credo che la descrizione breve di un prodotto rientri tra queste, ma il modo migliore per esserne sicuri è fare un test. Se il sito a cui ti riferisci non è in produzione, ovvero non è ufficialmente online ma è ancora in fase di test, ti consiglierei dunque di provare per sicurezza.

      Per fare le traduzioni sui testi dei prodotti, sia quelli della descrizione estesa che quelli della descrizione breve, io di solito uso WPML.

      Ciao,
      Massimiliano

      Rispondi
  3. Francesca

    Salve, io utilizzo il plugin polylang sul mio sito ma non mi traduce una stringa di testo che a sua volta fa parte del plugin Contextual Related Posts.
    Vorrei tradurre in 4 lingue semplicemente il titolo ‘Potrebbe piacerti anche:’ dei post correlati ma non riesco.

    Rispondi
    • Massimiliano De Stefano
      Massimiliano De Stefano dice:

      Salve Francesca,

      L’argomento riguarda lo sviluppo del plugin polylang, le consiglio di rivolgersi agli sviluppatori del tema stesso.

      Se invece vuole una consulenza specifica sul suo sito mi può mandare una richiesta attraverso la pagina contatti.

      Saluti,
      Massimiliano

      Rispondi

Lascia un Commento

Vuoi partecipare alla discussione?
Sentitevi liberi di contribuire!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *