Beeindruckend! Wenn Sie sich fragen, was dieser Beitrag bedeutet, machen Sie sich keine Sorgen, dass Sie nicht der einzige sind! Wie Sie wissen, wird WordPress in viele Sprachen übersetzt, aber sehr oft enthalten Plugins oder Themes einige Zeichenfolgen, die nicht in Ihre eigene Sprache übersetzt werden, und das ist mehr als frustrierend: Es ist irritierend.
Warum passiert das? Wahrscheinlich, weil Entwickler nicht so verwenden, wie sie sollten Internationalisierung. Das heißt, die Verwendung bestimmter Funktionen, die in WordPress die eine einfache Möglichkeit bieten, alles zu übersetzen.
Schritt 1 – Laden von Übersetzungsdateien
Der allererste Schritt beim Erstellen eines Designs besteht darin, Übersetzungsdateien zu laden. Es gibt viele Möglichkeiten, dies zu tun, aber der einfachste ist, diesen Code zu verwenden:
add_action('after_setup_theme', 'my_theme_setup');
function my_theme_setup(){
load_theme_textdomain('my_theme', get_template_directory() . '/languages');
}
Wenn Sie an einem Plugin arbeiten, ist es ziemlich dasselbe:
function myplugin_init() {
load_plugin_textdomain( 'my-plugin', false, dirname( plugin_basename( __FILE__ ) ) );
}
add_action('plugins_loaded', 'myplugin_init');
Nachdem die Dateien nun in einen Ordner „Sprachen“ geladen wurden, können Sie eine .pot- oder .po-Datei mit . erstellen POedit gratis Software.
Schritt 2 – Übersetzen von Zeichenfolgen
Wenn eine Zeichenfolge übersetzbar sein soll, müssen Sie die Zeichenfolge enthalten in eine Funktion einschließen. Die am häufigsten verwendeten Funktionen sind _e() und __(). Hier ist ein Beispiel für die Verwendung von __():
echo '<p>' . __( 'This is the string content', 'textdomain' ) . '</p>';
Diese Funktion gibt die enthaltene Zeichenfolge zurück, gibt sie jedoch nicht aus. Deshalb müssen wir echo verwenden. Aber die Funktion _e() gibt den String aus, der enthält, ohne echo oder print zu verwenden:
echo '<p>';
_e( 'This is the string content', 'textdomain' );
echo '</p>';
Schritt 3 – String mit Variablen übersetzen
Aber manchmal kann Ihr String Variablen enthalten. Die Verwendung von _e() und __() funktioniert nicht. In diesem Fall müssen Sie also die Funktionen printf() und sprintf() verwenden. Wie wir bereits gesehen haben, gibt printf() den String zurück, während sprintf() ihn speichert.
echo '<p>';
printf( __( 'I bought %d books.' ), $_books_count );
echo '</p>';
echo '<p>';
echo sprintf( __( 'I bought %d books.' ), $_books_count );
echo '</p>';
Schritt 4 – Strings mit mehr als einer Variablen
Im Fall einer Zeichenfolge, die mehr als eine Variable enthält, verwenden Sie den folgenden Code:
printf( __( 'I bought %1$s books, and %2$s tomatoes.' ), $books_count, $tomatoes_count );
Schritt 5 – Umgang mit Pluralen
Im obigen Beispiel habe ich Bücher und Tomaten gekauft. Aber was habe ich nur ein Buch gekauft? Der Code druckt „1 Bücher“, und dies ist nicht korrekt. Um mit Plural umzugehen, gibt es eine weitere Funktion namens _n(). So verwenden Sie es:
printf( _n( 'i bought %d book.', 'i bought %d books.', $books_count ), $books_count );
Schritt 6 – Kontexte
Manchmal kann ein Wort aufgrund seines Kontexts unterschiedliche Bedeutungen haben. Sie können dann diese Funktionen _x() und _ex() verwenden. Der zweite gibt den String wieder, während der erste nur seinen Inhalt speichert. Diese Funktionen haben ein zweites Argument, um ihren Kontext zu erklären. Wenn beispielsweise ein Wort zweimal auf einer Seite verwendet wird, aber im Inhalt und in der Seitenleiste unterschiedliche Bedeutungen hat, sieht Ihr Code ungefähr so aus:
/*
APPARENT (obvious vs. not clear) — It was apparent to all, Joe was the apparent loser.
Two different contexts for the word "apparent"
*/
// In the content
echo _x( 'apparent', 'in_content', 'my-plugin-domain' );
// In the sidebar
echo _x( 'apparent', 'in_sidebar', 'my-plugin-domain' );
Schritt 7 – Javascript-Internationalisierung
Und wenn Sie schließlich einen String haben, der in einer Javascript-Datei übersetzbar sein muss, können Sie eine im Codex definierte Methode mit wp_localize_script() verwenden.
// In your PHP file:
wp_enqueue_script( 'script-handle', … );
wp_localize_script( 'script-handle', 'objectL10n', array(
'speed' => $distance / $time,
'submit' => __( 'Submit', 'my-plugin-domain' ),
) );
// in the javascript file:
$('#submit').val(objectL10n.submit);
$('#speed').val('{speed} km/h'.replace('{speed}', objectL10n.speed));
Ersetzen Sie einfach Ihre eigenen Variablen und fertig!