Traducendo il tuo tema

È molto facile chiudere gli occhi su altre lingue quando si sviluppa il tema WordPress, ma questa è una pessima abitudine e immediatamente allontana un intero mercato di utenti di WordPress e potenzialmente migliaia di dollari in entrate perse. Tra i primi 10 paesi che cercano su Google "temi WordPress", solo uno parla l'inglese nativo (gli Stati Uniti) e viene 9 °. Al momento della stesura di questo, ci sono solo 269 temi nel database dei temi di WordPress etichettati come traduttori di oltre 1.500 temi. Questo è solo il 18% dei temi. Ti mostrerò come rendere il tuo uno di loro.


Come funziona

Quando di solito crei un tema, devi semplicemente codificare con hardcode qualsiasi testo a tema, come il messaggio di errore 404 in 404.php file o etichette come "commenti:" o "autore:". Ad esempio, se WordPress dell'utente è tedesco, questi frammenti di testo verranno ancora visualizzati in inglese. La soluzione a questo è di restituire o eco queste istruzioni utilizzando una delle quattro funzioni di WordPress progettate per fare riferimento a un file di lingua per il testo corretto. Una volta inserito il testo in queste funzioni, è possibile creare un file contenente tutte le traduzioni a cui viene fatto riferimento ogni volta che viene caricato il tema. Ci sono tre file di traduzione che usiamo:

  • .pentola (Modello oggetto portatile) - Questo è il file modello che contiene un riferimento a ogni stringa di testo nel tema che deve essere tradotto. Questo file non contiene alcuna traduzione. È un file in chiaro.
  • .Po (Oggetto portatile) - Realizzato con il file .pot, il file .po contiene tutti i riferimenti alle stringhe e le loro traduzioni in una lingua specifica. Questo è anche un file di testo in chiaro che può essere modificato.
  • .momento (Oggetto macchina) - Una versione binaria del file .po. Utilizzando il codice macchina, il file può essere utilizzato molto più velocemente rispetto alla sua alternativa in testo normale.

Passo 1 Le quattro funzioni

Ciascuna delle quattro funzioni richiede almeno un argomento, che è il testo che deve essere tradotto. Le funzioni sono:

  • __ () - (due underscore) La funzione base che userai la maggior parte del tempo. Restituisce il testo nella lingua corretta.
  • _E () - Lo stesso di __ () tranne che echeggia il testo invece di restituirlo.
  • _N () - Utilizzato quando il testo ha il potenziale per essere plurale, quindi per esempio se dovessi mostrare quanti commenti sono stati fatti, potresti voler stampare "X commenti" o "X commento" a seconda di quanti commenti hai.
  • _X() - Utile per quando la traduzione della parola dipende dal contesto. "Post" potrebbe significare "un post (Sostantivo)"o" per postare (verbo)"in base al contesto: è importante che il traduttore sappia cosa intendi quando traduci per essere accurato. _X() è usato principalmente dove vengono usate parole singole.

__ () e _e ()

Queste sono le funzioni di traduzione più semplici che WordPress ha da offrire. Diamo un'occhiata a un esempio di ciascuno:

 
 

Entrambe queste funzioni stanno facendo esattamente la stessa cosa qui. L'affermazione "questo è un post" viene controllata rispetto al file .mo se ce n'è uno e restituisce il risultato. __ () e _E () richiede solo un argomento da passare a loro, che è il testo che vogliamo tradurre. Un secondo argomento facoltativo è disponibile e ci arriveremo più tardi. L'unica differenza tra i due è quella __ () ha bisogno del eco dichiarazione qui. Diamo un'occhiata ad un esempio dove __ () funziona meglio di _E ():

 

Invece di passare una stringa al il contenuto() funzione, abbiamo usato __ () in modo che il testo possa essere tradotto. Se l'avessimo usato _E () qui invece, avresti la traduzione di "Clicca qui per saperne di più", fatta eco al documento invece di essere passata a il contenuto() che causerebbe ogni sorta di problemi inutili.

_N ()

Che cosa succede se hai una situazione in cui il testo che emetti potrebbe potenzialmente essere un plurale o un singolare come nell'esempio "X commenti" sopra? Invece di dare due diverse stringhe di testo per il traduttore, puoi dire che hai un singolo pezzo di testo che ha bisogno di una traduzione singolare e plurale. I seguenti due esempi generano entrambi lo stesso risultato per l'utente:

 
 

_N () richiede tre argomenti. Il primo è la versione singolare del testo, il secondo è il plurale e il terzo è il numero a cui fa riferimento. In questo caso, get_comments_number () sta trovando quanti commenti sono su un post e poi _N () sta scegliendo il testo appropriato da usare.

_x () & _ex ()

Diciamo che stai traducendo un file .pot e ti imbatti in una voce "scroll". Intendi interpretarlo come "un pezzo di carta arrotolata" o "scorri su o giù nel sito web"? Si potrebbe davvero fare con un contesto per descrivere ciò che è necessario per tradurlo. Queste funzioni ti danno quell'abilità, avendo un secondo attributo richiesto che richiede una breve descrizione per descrivere la frase o la parola. Controlla l'esempio qui sotto:

 

L'esempio mostra la differenza tra _X() e _ex(). È lo stesso e, come con _E, per fare in modo che la funzione echi l'output anziché restituirlo. Per entrambi, il nostro primo parametro è il nostro testo che deve essere tradotto, e il secondo è un commento o una nota sul testo della traduzione per chiarire cosa si intende.

Tecniche avanzate

Diciamo che hai una situazione in cui il testo che vuoi generare è composto da una stringa di testo con il risultato di una funzione o il valore di una variabile posta da qualche parte al suo interno. Potresti essere tentato di correggere qualcosa del genere:

 

Quando si tratta di creare il tuo file .pot, POEdit lo ignorerà perché non vuole usare una variabile nel mezzo di una frase. Il motivo è che invierà la stringa Hai scelto il tema $ color al file .pot, ma quando si tratta di cercare la traduzione quando lo script viene eseguito, cercherà la stringa Hai scelto il tema blu che non troverà. Quindi, cosa succede se lo facciamo invece:

 

Ora lo script sarà in grado di recuperare le traduzioni, ma ora è diventato troppo difficile da tradurre perché la frase è stata suddivisa. Questa frase potrebbe non essere nemmeno traducibile in alcune lingue che hanno una sintassi largamente diversa, come in tedesco, dove la loro parola per "scelto" apparirebbe alla fine della frase. Dovresti affrontare il problema di spiegare che queste due stringhe di testo separate fanno parte di una, e che "il tema" potrebbe non tradursi affatto in "tema".

La soluzione è utilizzare una singola stringa di testo con sintassi a singola citazione. Questo è dove il printf () o sprintf () le funzioni diventano utili Diamo un'occhiata a come deve essere il nostro codice:

 

Questo non solo risolve tutto il nostro problema, ma è molto più ordinato e utilizza solo una riga di codice. Il printf () o sprintf () I primi argomenti delle funzioni sono la stringa da esportare che contiene almeno un segnaposto, in questo caso %S (che significa "stringa"), e ogni altro argomento sono variabili che devono essere collocate all'interno della stringa iniziale. Ci sono molti segnaposti diversi che puoi usare all'interno della tua stringa e puoi trovare una lista completa sotto sprintf nel manuale PHP. Si noti che il diverso tra printf () e sprintf () è simile a _E () e __ () rispettivamente.


Passaggio 2 Introduzione a POEdit

Ora che hai taggato con successo tutti i tuoi output di testo sul tuo tema, ora devi raccogliere queste informazioni in un file .pot. POEdit è un fantastico programma che ti dà la possibilità di creare il tuo file .pot e fornisce anche una GUI facile da usare che può essere usata per creare il tuo file .po e, cosa più importante, anche i file .mo.

Per prima cosa dovrai scaricare POEdit, che puoi trovare qui per Windows, Mac e Linux:
http://www.poedit.net/download.php

Una volta installato POEdit, puoi creare il tuo file .pot. Per fare ciò, vai su File> Nuovo catalogo. Ti verrà presentata una finestra di dialogo in cui dovrai inserire alcune informazioni di base. Gli elementi essenziali nella scheda "Informazioni sul progetto" sono il nome del progetto e la tua lingua / paese. È inoltre necessario inserire quanto segue nella casella "Moduli plurali":

Forme plurali: nplurals = 2; plurale = n! = 1;

Nella scheda "percorsi", inserisci il percorso in cui è possibile trovare i file relativi alla destinazione di salvataggio di questo file .pot. Ad esempio, se si inserisce il file .pot nella cartella principale del tema, immettere . (periodo). Se si desidera inserire il file .pot in una cartella "lingua" all'interno della radice del tema, immettere ... (due periodi).

Successivamente, devi indicare a POEdit quali parole chiave cercare quando esegui la scansione dei nostri file. Digita il seguente:

  • __
  • _E
  • _N: 1,2
  • _x: 1,2c
  • _ex: 1,2c

Il : 1,2 estensione dire a POEdit che queste parole chiave hanno due parti per loro. Per impostazione predefinita, il secondo argomento è il plurale a meno che non si includa il c il che significa che il secondo argomento è un commento.

Sei a posto! Fai clic su "OK" e scegli un luogo in cui salvare il tuo file .pot. Ricorda che deve riguardare il percorso che hai definito in precedenza. POEdit eseguirà la scansione dei tuoi file e troverà tutte le occorrenze delle tue funzioni di traduzione e le salverà senza traduzioni nel tuo file .pot. Se vuoi fornire il minimo supporto per la traduzione internazionale puoi spedire il tuo file .pot con il tuo tema e fermarti qui, tuttavia se sei in grado di tradurre il tuo tema in un'altra lingua, puoi spedire il tuo tema con una traduzione premade come descritto nel passaggio 3.


Passaggio 3 Traduzione e creazione del file .po

  1. Un elenco di tutte le stringhe di testo da tradurre
  2. La stringa corrente viene tradotta
  3. La tua traduzione della stringa
  1. Singolare e plurale della stringa corrente
  2. Schede per passare dal singolare al plurale della traduzione
  3. La tua traduzione

Una volta tradotte tutte le stringhe nel file .pot, è possibile salvarlo come file .po. Qualsiasi stringa per cui non hai fornito una traduzione verrà mostrata nella lingua originale quando qualcuno vedrà il tuo tema.

Il nome file del tuo file .po è cruciale. Gettext utilizza lo standard ISO 639 per le abbreviazioni linguistiche e ISO 3166 per le versioni locali. Ad esempio, se la tua traduzione è scritta in inglese americano, il tuo nome file sarà simile en-US.po. Anche la capitalizzazione è importante qui. Per un elenco completo dei codici di lingua e paese, controlla questi due collegamenti:

  • Codici di lingua Gettext
  • Codici paese Gettext

Una volta salvato, POEdit crea automaticamente un file .mo accanto al tuo file .po. Si consiglia di includere tutti e tre i file di traduzione con il tema in modo che le persone possano creare le proprie traduzioni e modificare facilmente le traduzioni esistenti.


Passaggio 4 Configurazione di WordPress

Ricapitoliamo quello che hai fatto finora. Hai detto a WordPress tutto il testo che vuoi tradurre e poi hai usato POEdit per raccogliere ogni stringa e inserirle in un file .pot che può essere tradotto in un file .po e .mo. Questi file sono quindi inclusi nei file del tema. Il passo finale è quello di comprimere il tema, installarlo e lasciare che WordPress sappia quale lingua .mo file vuoi che usi. Questa è una procedura molto semplice in cui accedi al tuo wp-config.php file trovato nella cartella principale di WordPress.

 / ** * WordPress Localized Language, per impostazione predefinita inglese. * * Cambia questo per localizzare WordPress. Un file MO corrispondente per la lingua * scelta deve essere installato su wp-content / languages. Ad esempio, installa * de_DE.mo in wp-content / languages ​​e imposta WPLANG su 'de_DE' per abilitare il supporto della lingua * in tedesco. * / define ('WPLANG', ");

Il tuo file dovrebbe già contenere define ( 'WPLANG', "); ma in caso contrario, è possibile aggiungerlo. È sufficiente aggiungere la lingua e il codice locale nel definire. Se dovessi tradurre il tuo tema in tedesco, avresti questo:

 define ('WPLANG', 'de_DE');

La tua internazionalizzazione è completa! Ricordati di includere il tuo file .pot con il tema e se sei riuscito a tradurre il tuo tema in un'altra lingua, per includere anche i file .po e .mo.