2012-11-26 11 views
11

So come creare traduzioni per temi e modelli in genere generando file .po e .mo con Poedit ad esempio. Ma poiché i nomi dei template sono scritti nei commenti PHP in cima a ogni file template, non c'è modo di tradurre questo come lo vedo io.Come tradurre un nome di modello WordPress?

WordPress modello di intestazione:

/** 
* Template Name: Three columns 
* 
* @package WordPress 
*/ 

Nome modello è in qualche modo analizzato da Wordpress e utilizzato per compilare il modello di selezione a discesa durante la creazione di una pagina.

Quindi la mia domanda è: esiste un modo per tradurre un nome di modello WordPress? WordPress cerca anche qualsiasi variabile specifica che posso impostare nel mio file modello? o è semplicemente impossibile?

risposta

12

Mi sono imbattuto in questo piuttosto recentemente. Ecco come ho risolto il problema:

Innanzitutto, aggiungi (se già non lo possiedi) Text Domain: mytext_domain al tuo style.css, dove mytext_domain è il dominio di testo effettivo per il tuo tema.

Poi aggiungere una chiamata fittizia alla funzione traslante da qualche parte nel vostro tema (cosa migliore è quello di aggiungere che proprio sotto la dichiarazione Nome modello, in modo da non chiedere perché hai messo esso):

/** 
* Template Name: Three columns 
* 
* @package WordPress 
*/ 
__('Three columns', 'mytext_domain'); 

Il motivo è che WordPress passa il nome del modello alla funzione translate(), ma dal momento che i plugin del traduttore analizzano il codice, non sono a conoscenza del fatto che il nome del modello debba far parte di .po (o era .mo?) file. La chiamata fittizia a __() risolve questo problema.

E il motivo per cui aggiungi la dichiarazione Text Domain al tuo style.css è perché è qui che WordPress cerca il dominio del tema quando analizza i nomi dei modelli.

Non riesco a darti le fonti esatte, dal momento che ho solo cercato il codice base, fino a quando ho capito come funziona e come essere in grado di tradurre i nomi dei miei modelli.

PP: Non sono sicuro di come funziona Poedit - se si aggiungono le vostre traduzioni a mano, potrebbe non essere necessario la chiamata manichino - basta provare con e senza di essa e l'uso a seconda di quale si adatta meglio :)

+1

Ottimo! Questo ha fatto il trucco. :) Strano che non ci sia quasi nessuna documentazione su questo. Per chiarire per gli altri: è necessario aggiungere 'Text Domain: mytext_domain' nei commenti alla definizione del tema in style.css. – jamietelin

+1

Sì, è praticamente non documentato affatto. Ho iniziato da [questo ticket] (http://core.trac.wordpress.org/ticket/6007) e poi mi sono fatto strada attraverso i file core fino a quando ho capito come funziona :) –

5

Meglio metodo:

  1. aggiungere l'intestazione Text Domain: theme-slug al file style.css, se non l'avete già fatto.

  2. Ottenere un checkout del pacchetto sviluppatore di WordPress ufficiali controllando il bagagliaio develop.svn: http://develop.svn.wordpress.org/trunk/

  3. Lì, troverete una directory chiamata/strumenti/i18n. In quella directory è un file makepot.php. Si può usare per i temi come segue:

> php makepot.php wp-theme /path/to/your/theme/directory theme-slug.pot

questo creerà il file POT per voi, utilizzando il codice di WordPress più recente. Ottiene le stringhe dalle intestazioni, da tutte le funzioni i18n di WordPress, tutto.Significa anche che non è necessario creare stringhe "false" come suggerisce l'altra risposta.

Assicurati di fare uno svn update di tanto in tanto, come gli strumenti i18n e il codice di tronco principale possono essere aggiornati per nuove cose ogni tanto.

Si noti che quando si utilizzano gli strumenti i18n, devono essere nella cassa di controllo. Non è possibile spostarli nel filesystem, poiché dipendono dalle funzioni di WordPress per eseguire l'analisi dei file, in modo che i relativi percorsi include il backup dell'albero nella directory core/src di WordPress. La directory principale come un intero deve essere intatta affinché gli strumenti funzionino correttamente. Tuttavia, la directory trunk può essere non configurata, non è necessario disporre di un'installazione funzionante di WordPress, è sufficiente una parte del codice WordPress per eseguire correttamente l'analisi dei file.

Problemi correlati