I18n-Unterstützung
Alle Ausgabezeichenfolgen sollten mit einer geeigneten Textdomäne verknüpft werden, um die Internationalisierung für interessierte Parteien zu ermöglichen, auch wenn der Entwickler kein Interesse daran hat, sein eigenes Plug-In zu übersetzen.
Beachten Sie, dass es sehr wichtig ist, die Sprachdateien während der init
Aktion zu laden, damit sich der Benutzer an der Aktion beteiligen kann.
Siehe den Codex: I18n für WordPress-Entwickler
Und auch dieser Artikel: Laden der WP-Sprachdateien richtig .
Seit WordPress 4.6+
In WP 4.6 wurden die Ladereihenfolge und die überprüften Speicherorte geändert, was Entwicklern und Benutzern die Arbeit erheblich erleichtert hat.
In Anbetracht eines Plugins mit einer Textdomäne 'my-plugin' sucht WordPress nun ZUERST nach einer Übersetzungsdatei in:
/wp-content/languages/plugins/my-plugin-en_US.mo
Wenn es dort keinen findet, sucht es dort nach einem, wo das Plugin es anweist (normalerweise im Ordner 'language', wenn es dem Codex folgt):
/ wp-content / plugins / my-plugin / languages / my- plugin-de_DE.mo
Wenn keine Sprachdatei gefunden wird, wird der Standardspeicherort von
/wp-content/languages/my-plugin-en_US.mo überprüft
Die erste Überprüfung wurde in 4.6 hinzugefügt und gibt den Benutzern einen definierten Ort zum Hinzufügen einer Sprachdatei, da der Benutzer nur die Textdomäne des Plugins kennen muss, bevor er wissen muss, wo der Entwickler die Sprachdatei hinzugefügt hat:
/ wp-content / languages / plugins / TEXTDOMAIN-LOCAL.mo
Unten ist der alte Weg (Nicht relevant seit WP 4.6+)
[...]
Abschließend möchte ich darauf hinweisen, dass es wichtig ist, benutzerdefinierte Benutzersprachdateien aus WP_LANG_DIR zu laden, bevor Sie die mit dem Plugin gelieferten Sprachdateien laden . Wenn mehrere Mo-Dateien für dieselbe Domain geladen werden, wird die zuerst gefundene Übersetzung verwendet. Auf diese Weise dienen die vom Plugin bereitgestellten Sprachdateien als Ersatz für Zeichenfolgen, die nicht vom Benutzer übersetzt wurden.
public function load_plugin_textdomain()
{
$domain = 'my-plugin';
// The "plugin_locale" filter is also used in load_plugin_textdomain()
$locale = apply_filters( 'plugin_locale', get_locale(), $domain );
load_textdomain(
$domain,
WP_LANG_DIR . '/my-plugin/' . $domain . '-' . $locale . '.mo'
);
load_plugin_textdomain(
$domain,
FALSE,
dirname( plugin_basename(__FILE__) ) . '/languages/'
);
}