2012-11-26 7 views
11

Ich weiß, wie man Übersetzungen für Themen und Vorlagen erstellt, indem man .po und .mo Dateien mit Poedit erzeugt. Aber da Vorlagennamen in PHP-Kommentaren oben in jeder Vorlagedatei geschrieben sind, gibt es keine Möglichkeit, dies so zu übersetzen, wie ich es sehe.Wie übersetzt man einen WordPress Vorlagennamen?

Wordpress Template-Header:

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

Template Name ist irgendwie von Wordpress analysiert und verwendet, um die Vorlage wählen Sie im Dropdown-zu füllen, wenn eine Seite zu erstellen.

Also meine Frage ist: Gibt es eine Möglichkeit, einen WordPress Template-Namen zu übersetzen? Sucht WordPress auch nach einer bestimmten Variablen, die ich in meiner Vorlagendatei einstellen kann? oder ist es einfach unmöglich?

Antwort

12

Ich bin erst kürzlich darüber gestolpert. Hier ist, wie ich um dieses:

zuerst, (wenn Sie bereits nicht haben) Text Domain: mytext_domain zu Ihrem , wo mytext_domain ist die eigentliche Text-Domain für Ihr Thema.

Dann einen Dummy-Aufruf an die Übersetzungsfunktion irgendwo in Ihrem Thema hinzufügen (Beste ist, es fügen Sie einfach unter dem Namen der Vorlage Erklärung, so fragt man sich nicht, warum Sie es gesetzt haben):

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

Der Grund dafür ist, dass WordPress Ihren Vorlagennamen an die translate()-Funktion übergibt, aber da Übersetzer Plugins Ihren Code analysieren, sind sie nicht bewusst, dass Ihr Vorlagenname Teil der .po sein sollte (oder war es .mo?) Datei. Der Dummy-Aufruf an __() behebt dieses Problem.

Und der Grund, warum Sie die Text Domain Deklaration zu Ihrer style.css hinzufügen, ist, weil WordPress bei der Analyse von Vorlagennamen nach der Textdomäne Ihres Themes sucht.

Ich kann Ihnen keine genauen Quellen nennen, da ich wirklich nur den Kerncode durchforscht habe, bis ich herausgefunden habe, wie es funktioniert und wie ich meine Vorlagennamen übersetzen kann.

PP: Ich bin nicht sicher, wie Poedit funktioniert - wenn Sie Ihre Übersetzungen von Hand hinzufügen, können Sie den Dummy-Anruf nicht brauchen - gerade testen Sie mit und ohne sie und die Verwendung je nachdem, was Ihnen am besten passt :)

+1

Großartig! Das hat den Trick gemacht. :) Seltsam, dass es dazu fast keine Dokumentation gibt. Um für andere zu klären: Sie müssen 'Text Domain: mytext_domain' in Ihren Themendefinitionskommentaren in style.css hinzufügen. – jamietelin

+1

Ja, es ist überhaupt nicht dokumentiert. Ich startete von [diesem Ticket] (http://core.trac.wordpress.org/ticket/6007) und ging dann durch die Kerndateien, bis ich verstand, wie es funktioniert :) –

5

Besser Methode:

  1. Fügen Sie den Text Domain: theme-slug Header auf Ihre style.css Datei, wenn Sie nicht bereits getan haben.

  2. eine Kasse des offiziellen Wordpress-Entwickler-Paket Holen Sie sich das develop.svn Stamm, indem Sie aus: http://develop.svn.wordpress.org/trunk/

  3. Dort finden Sie ein Verzeichnis namens/tools/i18n. In diesem Verzeichnis befindet sich eine Datei . Sie können es für Themen wie folgt verwenden:

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

Dies wird die POT-Datei für Sie erstellen, den aktuellen Wordpress-Code. Es bekommt die Strings von den Headern, von allen WordPress i18n Funktionen, alles.Es bedeutet auch, dass Sie keine "falschen" Strings erstellen müssen, wie die andere Antwort vermuten lässt.

Stellen Sie sicher, dass Sie auch einmal eine svn update machen, da die i18n-Tools und der Stammcode immer wieder für neue Dinge aktualisiert werden können.

Beachten Sie, dass sie bei Verwendung der i18n-Tools im Kofferauszug sein müssen. Sie können sie nicht im Dateisystem verschieben, da sie von WordPress-Funktionen abhängig sind, um die Dateien teilweise zu analysieren. Daher haben sie relative Include-Pfade, um die Struktur in das WordPress-core/src-Verzeichnis zu sichern. Das Stammverzeichnis als Ganzes muss intakt sein, damit die Tools ordnungsgemäß funktionieren. Allerdings kann das Trunk-Verzeichnis nicht konfiguriert werden, Sie brauchen keine funktionierende Installation von WordPress, es braucht nur einen Teil des WordPress-Codes, um die Dateien richtig zu parsen.