Ich möchte ein Kinderthema für TwentyFifteen Theme erstellen, das viele Dinge anpassen wird, einschließlich der Übersetzung. Wenn ich WordPress in meiner Sprache (Farsi) installiere, enthält es TwentyFifteen Sprachdateien in wp-content/languages/themes
Wenn ich also einen languages
in meinem Kind-Thema load_theme_textdomain( 'twentyfifteen', get_stylesheet_directory() . '/languages' )
und ihm angepasste Sprachdateien hinzufüge und load_theme_textdomain( 'twentyfifteen', get_stylesheet_directory() . '/languages' )
zu den functions.php
meines load_theme_textdomain( 'twentyfifteen', get_stylesheet_directory() . '/languages' )
Themas hinzufüge, functions.php
meine angepassten Sprachdateien nicht geladen Stattdessen werden die Dateien in wp-content/languages/themes
geladen. Was kann ich tun, um diese Dateien zu überschreiben?
Seit WP 4.6 load_theme_textdomain()
(und folglich load_child_theme_textdomain()
) .mo-Dateien, die von der Online-Übersetzungsplattform von WP (translate.wordpress.org) heruntergeladen wurden. Aufgrund eines neuen Codes ( hier in Zeile 769 ) ignorieren diese functionen Ihre lokalen .mo-Dateien vollständig, wenn die Textdomäne im allgemeinen Sprachenverzeichnis gefunden wird .
Sie können jedoch die grundlegendere function load_textdomain()
verwenden, um Ihre .mo-Datei direkt zu laden und Strings von der ursprünglichen Domäne zu überschreiben:
$domain = 'textdomain-to-override'; $path = get_stylesheet_directory() . '/languages/'; // adjust to the location of your .mo file $locale = apply_filters( 'theme_locale', get_locale(), $domain ); load_textdomain( $domain, $path . $locale . '.mo' );
Hier ist ein Zitat aus der Quelle von load_textdomain
(in WP 4.6):
Wenn die Textdomäne bereits vorhanden ist, werden die Übersetzungen zusammengeführt. Wenn beide Sätze die gleiche Zeichenfolge haben, wird die Übersetzung vom ursprünglichen Wert übernommen.
Mit anderen Worten, um Ihre Übersetzung von TwentyFifteen zu überschreiben, müssen Sie sicherstellen, dass Ihre Mo-Dateien zuerst geladen werden, so dass sie als “das Original” angesehen werden. Dazu können Sie die Tatsache verwenden, dass die functions.php
eines untergeordneten Themas vor die des übergeordneten geladen wird.
Suchen Sie im übergeordneten Thema nach der function, die die Textdomäne lädt. Es verwendet wahrscheinlich den after_setup_theme
Hook. Stellen Sie sicher, dass Ihr untergeordnetes Thema dieselbe Textdomäne wie das übergeordnete Element verwendet. Laden Sie dann Ihre Textdomäne mit load_child_theme_textdomain
auf demselben Hook, aber mit einer höheren Priorität .