Home » Localizzazione » Localizzare Temi e Plugin

Localizzare Temi e Plugin

1.  Introduzione

Questa guida ha lo scopo di fornire gli elementi essenziali per rendere un tema o un plugin localizzabile, a tale fine iniziamo ad introdurre alcuni termini e nozioni utili nel proseguio di questa guida.

Dobbiamo per prima cosa distinguerà fra internazionalizzazione e localizzazione, spesso i due termini sono usati come sinonimi anche se hanno dello sostanziali differenze:

1.1  Internazionalizzazione

Per internazionalizzazione (Spesso abbreviata in I18N dalla parola inglese internationalization di cui si prendono la prima e l’ultima lettera e si indica il numero di lettere intermedie, 18 appunto) si intende il processo che permette di rendere tutti i testi presentati all’utente di un plugin o tema, in una forma tale per la quale sia possibile in seguito eseguire una traduzione automatica di tali testi. In effetti è proprio l’internazionalizzazione l’operazione che viene spiegata in questa guida. Con tale operazione, chiunque, potrà poi generare dei file “dizionario” per la propria lingua.

1.2  Localizzazione

La disponibilità di un tema o di un plugin internazionalizzato (I18N) permette poi a singoli traduttori di generare un “dizionario” nella propria lingua e fare si che tale traduzione venga utilizzata da WP per il tema o il plugin, sempre che tal lingua sia quella impostata come lingua da utilizzare in WordPress tramite l’apposita impostazione del file config.php datei youtube herunterladen. I vantaggi di un tema o plugin localizzabile sono molteplici e permettono di aumentare il numero di potenziali utenti, che magari non conoscono l’inglese, lingua normalmente utilizzata per la realizzazione dei temi e dei plugin.

1.3  Strumenti

Per rendere un tema o un plugin internazionalizzato non occorrono particolari strumenti, potete realizzare il tutto tramite l’editor con cui scrivete il vostro codice. Per la generazione del file .POT (il file base per la successiva localizzazione) vi sono diversi strumenti a seconda che lavoriate in ambiente Unix o Windows o Mac. Il più semplice, conosciuto ed utilizzato è poEdit disponibile per tutte e tre le piattaforme (quella Mac è in fase di sviluppo), in ambiente Unix è anche possibile utilizzare i Gettext Tools da linea di comando apple bills.
2.  Definire il Text Domain

WordPress utilizza per le localizzazioni il framework GNU Gettext (http://www.gnu.org/software/gettext/gettext.html). Gettext è uno strumento maturo e largamente usato per la traduzione modulare di software. Si tratta di uno standard de facto per la localizzazione nell’ambiente del software open source/free.

Di base il catalogo delle stringhe di traduzione di WordPress non comprende le stringhe presenti in un tema o un plugin. Se si desidera abilitare la traduzione del proprio tema/plugin occorre caricare il suo specifico catalogo di traduzione.

Ciò si realizza inserendo all’inizio del/dei file del proprio tema/plugin un codice opportuno che carichi appunto il text domain specifico per quel tema/plugin win 10 update manuell herunterladen. Per i plugin il codice da inserire è:

load_plugin_textdomain(‘mioplugin’,’wp-content/plugins/dirmioplugin’);

Dove mioplugin definisce il nome del catalogo specifico per questo plugin, solitamente si usa o il nome del plugin o nel caso di nomi lunghi una sigla, il secondo parametro nel caso di plugin composti da un solo file e messi direttamente nella directory wp-content/plugins può essere omesso, nel caso di un plugin composto da più file posti all’interno di una directory di nome dirmioplugin tale parametro diventa obbligatorio.

mentre per i temi il codice da inserire è:

load_theme_textdomain(‘miotema’);

Tramite queste definizioni WordPress proverà a caricare il catalogo della lingua definita da WPLANG in wp-settings.php, nei nostri esempi successivi supporremo che il lingua definita sia l’italiano e che quindi WPLANG = “it_IT”. Nel caso di un plugin WordPress cercherà nella directory dei plugin o nel percorso specificato dal secondo parametro un file path/$domain-$locale.mo dove con $path si intende il secondo parametro specificato in load_plugin_textdomain e con $domain-$locale.mo il nome del text domain del plugin con l’aggiunta del valore di WPLANG.

In pratica supponendo di avere un plugin di nome eseplug posto in una propria directory col medesimo nome, l’istruzione di cui sopra sarà:

load_plugin_textdomain(‘eseplug’,’wp-content/plugins/eseplug’);

e WordPress cercherà nel caso la lingua sia l’italiano il file per le traduzioni di nome wp-content/plugins/eseplug/eseplug-it_IT.mo download virtual background zoom.

Nel caso di un tema invece, il file di traduzione cercato dovrà avere semplicemente il nome specificato come lingua con il suffisso .mo, quindi nel nostro caso it_IT.mo.

Per chiarezza, il file .mo non è, per lo sviluppatore di alcun interesse in quanto questo verrà realizzato dal traduttore partendo da un file di lingua base che ha come estensione .POT, quello che è fondamentale sono le funzioni di caricamento del text domain, senza di queste WordPress cercherà le stringhe da tradurre nel file di localizzazione di WordPress e non trovandole mostrerà il testo come codificato nel tema/plugin (solitamente in inglese).

Il secondo passo è rendere tutti i testi del tema/plugin localizzabili tramite le funzioni di localizzazione che analizzeremo nella sezione successiva.
3.  Le funzioni di localizzazione

Ogni testo all’interno di un tema o di un plugin deve venire reso localizzabile, WordPress definisce due funzioni per la localizzazione di un testo: __() e _e() download autobahn simulator for free. In entrambe le funzioni è necessario specificare SEMPRE due parametri, il primo è il testo da tradurre, il secondo è il nome del text domain da utilizzare per la traduzione, in pratica il primo parametro delle due funzioni viste nella sezione precedente.

Le due funzioni operano in maniera differente e andranno utilizzate a seconda che il testo tradotto debba venir passato ad un’altra funzione PHP oppure semplicemente visualizzato a video, tali funzioni sono:

__($messaggio, $dominio)

Questa funzione cerca nel modulo di localizzazione la traduzione di $messaggio e passa la traduzione come parametro ad un’altra funzione PHP. Se non viene trovata alcuna traduzione per $messaggio viene restituito il $messaggio stesso.

_e($messaggio, $dominio)

Questa funzione cerca nel modulo di localizzazione la traduzione di $messaggio e visualizza (echo) la traduzione. Se non viene trovata alcuna traduzione per $messaggio viene semplicemente visualizzato (echo) il $messaggio stesso.

Quindi la prima funzione dovrà essere utilizzata quando il testo è un parametro di una funzione in PHP mentre la seconda funzione sverrà utilizzata per quelle stringhe di testo che sono al di fuori di qualsiasi funzione PHP, tipicamente del semplice codice HTML inserito al di fuori di blocchi PHP delimitati dai classici marcatori youtube music videos legal.

Vediamo qualche esempio pratico, supporremo di aver definito un nomedominio ‘XYZ’

Example Title

In questo caso il testo è pure e semplice codice HTML quindi il testo da tradurre dovrà utilizzare la funzione _e(), trattandosi di una funzione PHP si dovrà inserirla fra gli appositi marcatori, quindi il tutto dovrà diventare:

Se invece il testo fosse all’interno di una funzione PHP come ad esempio un tag dei template come ad esempio:

.

In questo caso le stringhe da tradurre sono 3, e queste sono dei parametri della funzione comments_number, in tal caso occorre utilizzare la funzione __() che una volta tradotta una stringa la passa alla funzione PHP come parametro senza visualizzarla. Nel nostro esempio la funzione __() verrà richiamata tre volte ed il codice diverrà:

__(‘one response’,’XYZ’),
__(‘% responses’,’XYZ’)); ?>.

Nell’esempio abbiamo spezzato il tutto su tre righe per migliorare la lettura, nella pratica il tutto sarà su una singola riga.

Tale funzione va utilizzata anche nei casi in cui si abbia anche solo del testo che viene visualizzato tramite la funzione echo() come ad esempio:

echo ‘


windows office 2010 download kostenlos vollversion. ‘

Titolo


. ‘

Sottotilo


. edit_post_link(‘Edit’, ‘ · ‘, ”)
. ‘

‘;

Qui abbiamo del codice di una certa complessità, i testi da tradurre sono più di uno qualcuno è un testo e basta altri sono parametri di altre funzioni, ma tutto è comunque all’interno della funzione echo() quindi in questo caso occorrerà utilizzare la funzione __() per tutti i testi ottenendo quindi:

echo ‘


. ‘

‘ . __(‘Titolo’,’xyz’) . ‘


. ‘

‘ . __(‘Sottotilo’,’xyz’) . ‘


. edit_post_link(__(‘Edit’,’xyz’), ‘ · ‘, ”)
. ‘

‘;

Si noti come siano state spezzate le righe dei titoli escludendo dalla traduzione i marcatori HTML, si sarebbe potuto includerli nella stringa di traduzione ma ciò avrebbe appesantito il lavoro di traduzione successivo col rischio che i traduttori omettessero dei marcatori rendendo il codice non più valido lauras stern for free. Inoltre il secondo parametro di edit_post_link non è stato internazionalizzato in quanto trattandosi di un simbolo non necessita di traduzione.

Nel caso di testi “complessi” con all’interno marcatori HTML se si spezzasse la frase per escludere tali marcatori si otterrebbero vari spezzoni di frase che poi il traduttore dovrebbe capire appartenere alla medesima frase con richio di fraintendimenti ed errate traduzioni, facciamo un esempio:

Questa frase ha del testo in grassetto seguito da del testo normale

Se volessimo inserire le funzioni di internazionalizzazione evitando i marcatori HTML otterremmo questo codice (spezzato su più righe per migliorarne la lettura)



E che i traduttori vedranno come frasi da tradurre:

Questa frase ha del
testo in grassetto
seguito da del testo normale

Siccome chi traduce lo può fare senza necessariamente aprire il file del tema/plugin e/o non essere esperto abbastanza da leggere direttamente il codice HTML o PHP, ma lavorerà solo tramite poEdit, in questi casi è meglio internazionalizzare la stringa completa in maniera che sia chiara al traduttore, questo soprattutto perché spesso la struttura di una frase cambia da una lingua all’altra e traducendo letteralmente pezzetti di frase si otterrebbero traduzioni “improbabili”.

Quindi l’esempio di cui sopra non sarà (spezzato su più righe per migliorarne la lettura):

da del testo normale,’xyz’) ?>

Si sono quindi esclusi dalla traduzione i tag di apertura e chiusura paragrafo (

e

) mentre nella stringa da tradurre si è lasciato il marcatore del grassetto ()

4.  Generare il file .POT

Il file .POT è il catalogo contenente le stringhe di testo da tradurre, da questo file i traduttori potranno generare per la propria lingua i file .po, la versione leggibile del catalogo di traduzione ed il file .mo che ne è la versione compilata utilizzabile dalle librerie Gettext. poEdit genera “apparentemente solo file .mo e .po, ma un file .POT non è altro che un file .po nei quali sono definite le stringhe da tradurre ma non la loro traduzione, quindi generando un file .po contenete le stringhe da tradurre senza effettuare alcuna traduzione, basterà rinominarlo con estensione .POT per avere ciò che serve.

Si supporrà di lavorare in una directory che contenga solo il/i file del plugin o del tema per cui si vuol generare il file .POT, è quindi sconsigliabile nel caso dei plugin eseguire queste operazioni nella directory dei plugin di WordPress, facendolo verrebbero lette tutte le stringhe di tutti i plugin presenti download bep. Le indicazioni fanno riferimento alla versione inglese di poEdit per la quale sono comunque disponibili versioni localizzate dei menu fra cui l’italiano

Avviare poEdit
Fare click su File -> New Catalog
Inserire il nome del progetto (primo campo), solitamente il nome del plugin o del tema – Le altre voci potranno essere lasciate vuote
Fare click sulla linguetta Paths
Inserire come Base Path
Inserire il percorso alla directory che contiene il/i file del tema/pluing, nel nostro caso basterà indicare . come directory che indica la directory corrente.
Fare click sull’icona New Item (la seconda da sinistra, che appare come un piccolo quadrato)
Inserire il percorso alla directory che contiene il/i file del tema/pluing, nel nostro caso basterà indicare . come directory che indica la directory corrente. Premere invio
Fare click sulla linguetta Keywords
Fare click sull’icona New Item (la seconda da sinistra, che appare come un piccolo quadrato)
Digitare __ (doppio underscore / trattino basso)), premere invio
Fare click sull’icona New Item
Digitare _e (underscore e), premere invio
Fare click su Ok
Salvare il file assegnando un nome al file .po (tipicamente il nome del tema/plugin che utilizzerete come nome per le le funzioni di definizione del text domain)

A questo punto dopo una breve elaborazione apparirà la finestra Update Summary che dovrebbe presentare un elenco di stringhe da tradurre, che sono state “estratte” dalle funzioni indicate in precedenza (__ and _e) e contenute in tutti i file PHP presenti nella directory. Fare clic su Ok.

Salvare il file .po ed uscire dal programma. Troverete sia un file .po che un file .mo, quest’ultimo potrà venir eliminato ed il file .po andrà rinominato con estensione .POT

Rendete disponibile il file .POT separatamente o meglio ancora con il pacchetto di distribuzione del vostro tema/plugin download skype for macbook air. I traduttori utilizzeranno questo file per produrre i file .po e .mo nella propria lingua ed utilizzati dalle funzioni load_plugin_textdomain() e load_theme_textdomain().

Per ulteriori tutorial riguradanti Worepress non ti resta altro che andare QUI.
Nel nostro sito potrai trovare molti tutorial tutti riguardanti WordPress adatti a tutti partendo dai principianti fino ad arrivare agli esperti che però potrebbero avere dimenticato un passaggio.
Sulla destra dell’homepage troverai sia gli articoli pubblicati recentemente sia tutte le macrocategorie che trattiamo nel sito. In alternativa puoi scrivere la parola o le parole chiave in alto a destra nella ricerca del sito e troverai tutto ciò che riguarda quello che hai cercato. BUONA VISIONE!

Lascia un Commento