web-dev-qa-db-ger.com

Ich mache meine Plugin-Übersetzung fertig. Poedit funktioniert nicht

Ich baue ein Plug-In, das bisher großartig läuft. Ich möchte mit der Lokalisierung beginnen. Ich weiß nicht, was falsch läuft, aber es nervt mich, wenn ich versuche, es in Poedit zu laden.

Lassen Sie uns dies also Schritt für Schritt tun, wie mir mehrere Tutorials zeigen.

Also lade ich in myplugin.php folgendes, um WP zu sagen, wo sich meine Sprachdateien befinden (nachdem ich den Ordner erstellt habe).

function ap_action_init()
{
// Localization
  load_plugin_textdomain( 'myplugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); 
}

add_action('init', 'ap_action_init');

Dann passe ich alle zu übersetzenden Zeichenfolgen in meiner Datei (die sich im Admin-Ordner befindet) an.

<h2><?php _e('MyPlugin Settings', 'myplugin'); ?></h2>
<?php _e('Element Width', 'myplugin'); ?>
<?php _e('This defines the default width of your Elements', 'myplugin'); ?>

So weit so gut, würde ich denken. Aber dann öffne ich Poedit.

Ich fordere poedit auf, den myplugin-nl_NL.po im Sprachenordner in meinem Plugin zu speichern.

Ich sage dem Basispfad, dass er ../ sein soll

Und ich sage meinen Pfaden, dass sie entweder ./admin oder admin sein sollen (wenn ich /admin oder etwas anderes gebe, wird mir ein Fehler angezeigt, dass der Ordner nicht existiert. Also gehe ich davon aus, dass er meine Ordner findet).

Ich fordere poedit auf, nach den Schlüsselwörtern __() und _e() zu suchen.

Und dann drücke ich ok! Jedes Mal (was auch immer ich zu versuchen scheine) zeigt es mir keine zu übersetzenden Zeichenfolgen, während ich beim Importieren einer normalen .po-Datei eine Menge davon zeige.

So. Sieht jemand, wo es hier schief geht?

PS: Vielleicht ein wichtiger Hinweis. Wenn ich versuche, meine eigene PO-Datei manuell zu erstellen, werden mir Zeichenfolgen in POedit angezeigt. Aber wenn ich das auf meine Website setze und WordPress ändere, ändert es nichts an der Sprache. Ich gehe also davon aus, dass ich in meinen WP -Dateien etwas falsch gemacht habe.

Hoffe, jemand kann helfen :)

1

OK. Ich habe das Problem gefunden. In mehreren Tutorials wurde mir empfohlen, __() und _e() in meinen Bericht aufzunehmen. Und jetzt habe ich herausgefunden, dass die Antwort ziemlich dumm ist. Weil es mit diesen Suchwerten einfach keine Zeichenketten gibt. Da ist immer etwas zwischen diesen Klammern.

Die Lösung ist also sehr einfach (und ziemlich dumm). Setzen Sie die Suchwerte auf __ und _e

2

Verwenden Sie die WordPress i18n-Tools, um eine POT-Datei für Sie zu generieren, anstatt poedit zum Generieren Ihrer Übersetzungszeichenfolgen aus Ihrem Code zu verwenden.

Dies hat den Vorteil, dass Sie a) nichts Besonderes in poedit tun müssen und b) alles bekommen, was für die Übersetzung möglich ist, einschließlich Überschriften und nicht standardmäßigen Aufrufen von Übersetzungszeichenfolgen (nicht alles ist __ und _e).

Dies zu tun ist eigentlich relativ einfach.

Schritt der Erste

Holen Sie sich einen SVN-Client und gehen Sie folgendermaßen vor:

svn checkout http://develop.svn.wordpress.org/trunk/ develop

Dadurch erhalten Sie eine Kopie des WordPress-Trunk-Verzeichnisses und der speziellen Tools, die Entwickler benötigen. Möglicherweise benötigen Sie nicht alle diese Tools, aber es gibt eines, das Sie benötigen.

(Hinweis: Wenn Sie ein Git-Benutzer sind, können Sie stattdessen einen Klon von git://develop.git.wordpress.org/ erstellen.)

Schritt die Sekunde

Gehen Sie in dieses Verzeichnis, dann in das Tools-Verzeichnis und dann in das i18n-Verzeichnis. Hier finden Sie eine Datei mit dem Namen makepot.php. Das ist das, was du brauchst.

Die Bedienung ist sehr einfach. Holen Sie sich eine Eingabeaufforderung und geben Sie Folgendes ein:

php makepot.php wp-plugin /path/to/your/plugin/folder plugin-slug.pot

Das Flag "wp-plugin" weist den Code an, ein Plugin zu untersuchen. Sie können hier auch wp-theme verwenden, um eine POT-Datei für ein Thema zu generieren.

Ersetzen Sie den Pfad zum Ordner Ihres Plugins durch die entsprechende lokale Kopie des Plugins und verwenden Sie den Slug Ihres eigenen Plugins für den Pot-Dateinamen. Der PHP Code scannt das Verzeichnis Ihres Plugins und erstellt eine POT-Datei für Sie.

Eine POT-Datei ist eine "PO-Vorlage", mit der poedit meiner Meinung nach recht gut umgehen kann. Möglicherweise möchten Sie die Kopfzeile (in einem beliebigen Texteditor) so bearbeiten, dass der Autor und die Plug-in-Informationen darin enthalten sind.

Warum ist das besser:

Vergleichen Sie die Ergebnisse selbst. Beachten Sie, dass die Header des Plugins auch in der POT-Datei enthalten sind. Wenn Sie spezielle Übersetzungsmethoden wie _x oder _ex oder _n_noop verwendet haben, sind diese ebenfalls in der Datei enthalten.

Beachten Sie, dass der makepot.php-Code nicht eigenständig ist, sondern dass der Quellcode von WordPress verfügbar sein muss. Sie benötigen also den gesamten Checkout, nicht nur das Tools-Verzeichnis. Es verwendet den WordPress-Übersetzungscode, um einen Teil der Arbeit zu erledigen.

2
Otto