{"id":234137,"date":"2023-02-20T11:53:00","date_gmt":"2023-02-20T08:53:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234137"},"modified":"2022-11-11T16:01:01","modified_gmt":"2022-11-11T13:01:01","slug":"tutorial-sul-tema-wordpress-per-principianti-parte-8-traduzione","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/tutorial-sul-tema-wordpress-per-principianti-parte-8-traduzione\/","title":{"rendered":"Tutorial sul tema WordPress per principianti \u2013 Parte 8: Traduzione"},"content":{"rendered":"\n<p>In questa lezione impariamo come funziona la traduzione (o altrimenti nota come i18n) in WordPress e come apportare le modifiche necessarie nei nostri modelli. Impareremo anche come impostare correttamente PoEdit per creare un file di traduzione per il nostro tema, pronto per essere tradotto in diverse lingue.<\/p>\n<h2>Perch\u00e9 preoccuparsi di aggiungere il supporto per la traduzione?<\/h2>\n<p>Tutti i temi, almeno quelli che diventano pubblici per l&#8217;uso da parte di persone diverse dallo sviluppatore, dovrebbero essere disponibili per la traduzione. Questa si chiama internazionalizzazione (i18n in breve) e consente alle persone di tradurre i testi che aggiungi nel tuo tema in un&#8217;altra lingua.<\/p>\n<p>Il modo in cui funziona \u00e8 che tu, come autore di temi o sviluppatore di plugin, avvolgi tutti i tuoi testi (come &quot;Leggi di pi\u00f9&quot;, &quot;Nessun post&quot;) in determinate funzioni. Queste funzioni fanno in modo che WordPress sia in grado di raccoglierli e iniettarli una traduzione se esiste. All&#8217;interno del tuo tema (o plugin) puoi aggiungere file di un certo tipo di file per ogni lingua tradotta, o assicurarti che altre persone siano in grado di creare la propria traduzione nella loro lingua.<\/p>\n<p>Questo \u00e8 molto utile per le persone che vogliono usare WordPress e il tuo tema (o plugin) in una lingua diversa dalla lingua di origine in cui \u00e8 stato scritto (che di solito \u00e8 l&#8217;inglese). Ma pu\u00f2 anche essere utilizzato per cambiare alcuni testi in qualcosa di diverso all&#8217;interno della stessa lingua.<\/p>\n<p>Se sei interessato all&#8217;argomento, WordPress Codex ha una lunga e buona <a href=\"https:\/\/codex.wordpress.org\/I18n_for_WordPress_Developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">guida alla documentazione su i18n per sviluppatori<\/a>.<\/p>\n<h2>Implementazione di i18n nel nostro tema<\/h2>\n<p>Abbiamo gi\u00e0 fatto la prima parte nel <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-7-theme-setup-and-featured-images\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">passaggio precedente<\/a> di questa serie di tutorial sul tema, in cui abbiamo aggiunto <code>load_theme_textdomain<\/code>la funzione di configurazione del nostro tema. Nel caso ve lo foste dimenticato, questo \u00e8 quello che abbiamo aggiunto:<\/p>\n<pre><code>load_theme_textdomain('wptutorial', get_stylesheet_directory(). '\/lang');<\/code><\/pre>\n<p>Il primo argomento \u00e8 l&#8217;handle, questa \u00e8 una stringa univoca che utilizzerai per raggruppare tutti i testi che appartengono al tuo tema. Ripeterai questa maniglia ogni volta che renderai un testo traducibile. Il secondo argomento dice a WordPress dove si trovano i file di traduzione. Li abbiamo definiti per risiedere in una sottocartella &#8216; <code>lang<\/code>&#8216; nella nostra directory dei temi.<\/p>\n<p>Non preoccuparti se questa cartella non esiste o non contiene alcun file: nulla andr\u00e0 in crash. Se WordPress non trova la cartella n\u00e9 i file di traduzione corretti, torner\u00e0 per impostazione predefinita ai testi che abbiamo nel tema.<\/p>\n<p>Il prossimo passo \u00e8 esaminare tutto il nostro codice e trovare qualsiasi output di testo che dovrebbe essere traducibile. \u00c8 buona norma assicurarsi di coprire assolutamente tutti i testi. Niente \u00e8 pi\u00f9 fastidioso dell&#8217;utilizzo di un tema o di un plug-in in cui l&#8217;autore ha codificato i testi rendendo impossibile la traduzione o la modifica in alcun modo.<\/p>\n<h2>Come rendere traducibili i testi<\/h2>\n<p>Quello che facciamo con tutti i testi \u00e8 inserirli in una delle funzioni gettext di WordPress, che pi\u00f9 comunemente sono <code>_e()<\/code>o <code>__()<\/code>. Il primo \u00e8 un trattino basso con &quot;e&quot; che viene utilizzato quando si desidera fare eco al testo contemporaneamente. Il secondo \u00e8 costituito da due caratteri di sottolineatura e viene utilizzato quando non si desidera eseguire l&#8217;eco ma memorizzarlo o utilizzarlo in una variabile.<\/p>\n<p>WordPress ha pi\u00f9 funzioni gettext che servono a scopi pi\u00f9 specifici, ad esempio, <code>esc_html__()<\/code>e altro. Tuttavia non entreremo nei dettagli per quelli in questo tutorial.<code>_n()``_x()<\/code><\/p>\n<p>Le funzioni gettext accettano due parametri; prima il testo stesso e, in secondo luogo, l&#8217;handle che hai definito in <code>load_theme_textdomain<\/code>. In questo caso \u00e8 &#8216; <code>wptutorial<\/code>&#8216;.<\/p>\n<p>Ad esempio, se hai qualcosa del genere:<\/p>\n<pre><code>echo 'Read more';<\/code><\/pre>\n<p>Dovrai sostituirlo con:<\/p>\n<pre><code>_e('Read more', 'wptutorial');<\/code><\/pre>\n<p>E allo stesso modo per la memorizzazione in una variabile;<\/p>\n<pre><code>$myvariable = 'Read more';<\/code><\/pre>\n<p>Deve essere scritto cos\u00ec:<\/p>\n<pre><code>$myvariable = __('Read more', 'wptutorial');<\/code><\/pre>\n<p>Ora dobbiamo trovare tutti i testi nei nostri modelli! Se hai seguito questo tutorial con una &quot;T&quot; non sono molti. Abbiamo alcune stringhe in <code>index.php<\/code>e alcune in <code>single.php<\/code>.<\/p>\n<h2>Aggiunta del supporto per la traduzione nel nostro tema<\/h2>\n<p>Iniziamo con <code>index.php<\/code>e individuare il messaggio &quot;Nessun post, scusa&quot; che abbiamo aggiunto se il ciclo non conteneva alcun post. Avvolgiamo questo testo all&#8217;interno <code>_e()<\/code>perch\u00e9 vogliamo ancora farne eco. Quindi questo \u00e8 ci\u00f2 che otteniamo:<\/p>\n<pre><code>...\n} else {\n    ?&gt;&lt;p&gt;&lt;?php _e('No posts, sorry.', 'wptutorial'); ?&gt;&lt;\/p&gt;&lt;?php\n}\n...<\/code><\/pre>\n<p>Poich\u00e9 hai usato <code>_e()<\/code>, non dovresti vedere alcun cambiamento quando premi Aggiorna in prima pagina o archivio. Ma sotto il cofano, questo testo \u00e8 ora traducibile!<\/p>\n<p>Abbiamo questo stesso testo nel nostro <code>single.php<\/code>e <code>page.php<\/code>. Aggiornali come abbiamo fatto in <code>index.php<\/code>. Abbiamo aggiunto altri testi in <code>single.php<\/code>, quindi ecco come appare dopo aver reso tutti i testi traducibili:<\/p>\n<pre><code>...\n        &lt;?php the_category(); ?&gt;\n        &lt;p&gt;&lt;?php _e('Posted', 'wptutorial'); ?&gt;: &lt;?php the_date(); ?&gt; &lt;?php _e('at', 'wptutorial'); ?&gt; &lt;?php the_time(); ?&gt;&lt;\/p&gt;\n        &lt;p&gt;&lt;?php _e('Author', 'wptutorial'); ?&gt;: &lt;?php the_author(); ?&gt;&lt;\/p&gt;\n    &lt;\/article&gt;\n    &lt;?php endwhile;\n} else {\n    ?&gt;&lt;p&gt;&lt;?php _e('No posts, sorry.', 'wptutorial'); ?&gt;&lt;\/p&gt;&lt;?php\n}\n\u00a0\n...<\/code><\/pre>\n<p>D&#8217;ora in poi tutti i testi che aggiungiamo nel nostro tema ci assicuriamo di avvolgerli all&#8217;interno <code>__()<\/code>o <code>_e()<\/code>.<\/p>\n<h2>File di traduzione<\/h2>\n<p>Ci sono due modi per fornire file di traduzione al tuo tema;<\/p>\n<ul>\n<li>Fornisci un <code>.pot<\/code>-file<\/li>\n<li>o fornire una coppia di <code>.po<\/code>e <code>.mo<\/code>file.<\/li>\n<\/ul>\n<p>Il <code>.pot<\/code>-file \u00e8 consigliato per un tema che vendi o regali ad altri utenti, perch\u00e9 con questo file \u00e8 molto facile generare un file di traduzione per una nuova lingua. Tuttavia non \u00e8 facile (o gratuito) creare uno di quei file. Se hai familiarit\u00e0 con WP-CLI (riga di comando WordPress) o Grunt, puoi seguire le linee guida nella <a href=\"https:\/\/codex.wordpress.org\/I18n_for_WordPress_Developers#POT_files\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentazione di WordPress qui<\/a>. In caso contrario, l&#8217;altra alternativa potrebbe fare al caso tuo.<\/p>\n<p>I file <code>.po<\/code>e <code>.mo<\/code>lavorare insieme. WordPress richiede una <code>.mo<\/code>traduzione dei testi, ma questo file non \u00e8 leggibile umanamente. Pertanto abbiamo il <code>.po<\/code>file che \u00e8 leggibile per noi. Con il software giusto genera il <code>.mo<\/code>file ogni volta che apporti modifiche.<\/p>\n<p>Lo svantaggio di <code>.po<\/code>e <code>.mo<\/code>file \u00e8 che \u00e8 necessario generare una coppia per ogni lingua e, una volta tradotta in una lingua, non esiste un modo semplice per svuotare tutte le traduzioni per creare un&#8217;altra nuova lingua.<\/p>\n<p>Hai bisogno di un programma per modificare <code>.pot<\/code>e <code>.po<\/code>file. Il pi\u00f9 comune \u00e8 <a href=\"https:\/\/poedit.net\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PoEdit<\/a>. PoEdit \u00e8 gratuito e funziona sia per iOS che per Windows. Ma alcune funzionalit\u00e0 avanzate (come la generazione di un <code>.pot<\/code>file) richiedono purtroppo una versione a pagamento. Useremo la versione gratuita per creare un <code>.po<\/code>file per il nostro tema.<\/p>\n<p>Scarica e installa PoEdit per seguire il resto del tutorial.<\/p>\n<h2>Creazione di un file .po per il nostro tema con PoEdit<\/h2>\n<p>Creare un file di traduzione per l&#8217;inglese di solito non ha alcun senso quando tutti i testi nel nostro tema sono comunque in inglese, ma ai fini di questo tutorial creer\u00f2 un file di traduzione in inglese.<\/p>\n<p>1 Apri PoEdit e fai clic su File &gt; Nuovo&#8230;<\/p>\n<p>2 Ti verr\u00e0 chiesto di scegliere una lingua. Scegli la lingua desiderata, ad esempio l&#8217;inglese.<\/p>\n<p>3 Premi Salva (Ctrl+S). Individua la cartella del tema e accedi alla <code>\/lang\/<\/code>sottocartella. (Se non l&#8217;hai creato nell&#8217;ultimo passaggio, crealo ora). Il nome del tuo file \u00e8 fondamentale. Per i temi dovrebbe essere chiamato solo il codice della tua lingua. Per l&#8217;inglese americano sarebbe <code>en_US<\/code>, per il norvegese lo \u00e8 <code>nb_NO<\/code>. Cercalo su Google o fai riferimento a <a href=\"https:\/\/wpastra.com\/docs\/complete-list-wordpress-locale-codes\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">questa panoramica<\/a> per trovare il codice della tua lingua. Lo chiameremo <code>en_US.po<\/code>.<\/p>\n<p>4 Nel menu fare clic su Catalogo &gt; Propriet\u00e0&#8230;<\/p>\n<p>5 Nella prima scheda potresti inserire alcune informazioni come il nome del tuo progetto (tema) o cambiare la lingua, ma non \u00e8 necessario. Ti consiglio di mantenere il set di caratteri in UTF-8 poich\u00e9 questo \u00e8 ci\u00f2 che scriviamo per WordPress.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152370-61e4d69a10501.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152370-61e4d69a10501.png\" alt=\"Tutorial sul tema WordPress per principianti \u2013 Parte 8: Traduzione\" ><\/a><\/p>\n<p>6 Fare clic sulla scheda Percorsi sorgenti. Qui dovrai definire in quali cartelle il file deve cercare i testi traducibili. I percorsi sono relativi e poich\u00e9 l&#8217;abbiamo gi\u00e0 salvato in una sottocartella del nostro tema, sappiamo che deve salire di una directory. Premi il pulsante + sotto la casella Percorsi e scegli Aggiungi cartelle. Scegli la directory del tuo tema. Questo dovrebbe aggiungere un elemento di percorso &quot;.&quot; (salire di una cartella). Verifica che &quot;Percorso di base&quot; si riferisca alla directory del tema principale.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152370-61e4d69b261fd.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152370-61e4d69b261fd.png\" alt=\"Tutorial sul tema WordPress per principianti \u2013 Parte 8: Traduzione\" ><\/a><\/p>\n<p>7 Fare clic sulla scheda successiva, &quot;Sorgenti parole chiave&quot;. Qui devi indicare a PoEdit quali funzioni hai utilizzato per i testi traducibili (ad esempio <code>__<\/code>, <code>_e<\/code>e <code>esc_html_e<\/code>cos\u00ec via). Fare clic sul pulsante + per aggiungere ciascuna funzione e scriverle senza &quot;()&quot;. Sta a te decidere se vuoi coprire tutte le tue basi e aggiungere tutte le funzioni gettext di WordPress, ma in questo tutorial sappiamo di averne usate solo due. Quindi aggiungiamo due elementi; <code>__()<\/code>e <code>_e()<\/code>. Aggiungi le funzioni senza alcuna parentesi.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152370-61e4d69c29a5b.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152370-61e4d69c29a5b.png\" alt=\"Tutorial sul tema WordPress per principianti \u2013 Parte 8: Traduzione\" ><\/a><\/p>\n<p>8 Premi OK.<\/p>\n<p>9 Non resta che dire a PoEdit di scansionare i percorsi forniti per le funzioni che utilizzano <code>__()<\/code>e <code>_e()<\/code>(o qualunque cosa tu abbia fornito). Puoi farlo premendo il pulsante &quot;Aggiorna dal codice&quot;. (La versione Windows ha il testo sul pulsante ma la versione iOS no, quindi per iOS \u00e8 necessario premere il pulsante che di solito \u00e8 l&#8217;ultimo nella barra degli strumenti; un&#8217;icona di file con un&#8217;icona &quot;ripeti&quot; in alto. Fare clic il pulsante &quot;Aggiorna da codice&quot; e dovresti vedere tutti i testi elencati con un&#8217;interfaccia per la traduzione:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152370-61e4d69d34b4a.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152370-61e4d69d34b4a.png\" alt=\"Tutorial sul tema WordPress per principianti \u2013 Parte 8: Traduzione\" ><\/a><\/p>\n<p>Simpatico!<\/p>\n<h3>File di traduzione generati<\/h3>\n<p>Ora puoi usare PoEdit per tradurre ogni stringa, ma non lo faremo qui poich\u00e9 non ha senso tradurre dall&#8217;inglese all&#8217;inglese. Ricordati di premere Salva per aggiornare e generare un <code>.mo<\/code>file, e ogni volta che aggiungi un altro testo nel tuo tema, devi premere di nuovo il pulsante &quot;Aggiorna dal codice&quot;. Quindi appariranno le nuove modifiche ai tuoi modelli.<\/p>\n<p>Se controlli la <code>\/lang<\/code>sottocartella nella cartella della directory del tuo tema dovresti vedere due file; il <code>.po<\/code>file che abbiamo appena creato, e un <code>.mo<\/code>file con lo stesso nome, generato da noi salvando in PoEdit.<\/p>\n<p>Puoi fare una copia del <code>en_US.po<\/code>file e rinominarlo in un codice di lingua diverso. Ma ricorda che PoEdit non offre un modo semplice per cancellare tutte le stringhe tradotte; dovresti cancellare uno per uno. Questo \u00e8 il motivo per cui questo fa schifo per gli utenti che vogliono tradurre il tuo tema in una lingua diversa. Quindi, se hai la possibilit\u00e0 di creare un <code>.pot<\/code>file, dovresti farlo.<\/p>\n<p>WordPress cercher\u00e0 il file di traduzione in base alla lingua definita nel menu di amministrazione Impostazioni &gt; Lingua del sito. Se hai aggiunto una lingua diversa dall&#8217;inglese, puoi provarla cambiando la lingua del sito e vedere se viene visualizzata la tua traduzione!<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Impariamo come funziona la traduzione (o i18n) in WordPress e come rendere traducibili i testi. Include anche una guida all&#8217;uso di PoEdit per generare file .po.<\/p>\n","protected":false},"author":1,"featured_media":224072,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[918,896,896,720,918,1110,928,720,928,844,844,865,865],"tags":[1168],"class_list":["post-234137","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-codice","category-sviluppatore","category-n-a","category-soggetti","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/234137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=234137"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/234137\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/224072"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=234137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=234137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=234137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}