Ist eine Textdomäne für ein untergeordnetes Thema erforderlich?

8

Entschuldigung für die Noob-Frage.

Ist für ein untergeordnetes Thema eine Textdomäne erforderlich? Ich erstelle ein einfaches untergeordnetes Thema ohne deklarierte Textdomäne. Wenn ich also Zeichenfolgen verwende, die übersetzt werden sollen, sollte ich die Textdomäne des übergeordneten Themas verwenden (ja, das übergeordnete Thema hat eine Textdomäne geladen und auch .mo / .po-Dateien).

Zum Beispiel diese Zeile in meine untergeordnete Themenvorlage einfügen

<?php __('Some String', 'parent-text-domain');> 

Wird über String übersetzt?

Danke im Voraus

Ayanisieren
quelle

Antworten:

7

TL; DR: Wenn Sie Zeichenfolgen verwenden, die im übergeordneten Thema enthalten sind, benötigen Sie keine Textdomäne für Ihr untergeordnetes Thema.

Wenn Sie jedoch Zeichenfolgen verwenden, die nicht im übergeordneten Thema verwendet werden, benötigen Sie eine andere Textdomäne mit zugehörigen translation ( .mo) - Dateien , um sie übersetzbar zu machen .


Übersetzungsworkflow

Wenn WordPress in einer Übersetzungsfunktion auf eine Zeichenfolge stößt, gilt Folgendes:

  1. Überprüft, ob eine Übersetzung für die erforderliche Textdomäne geladen wurde (über load_plugin_textdomainoder load_theme_textdomainoder load_textdomain). Wenn ja, fahren Sie mit Punkt 3 fort.
  2. Überprüft, ob der Übersetzungsordner (standardmäßig wp-content/languages) eine übereinstimmende Textdomain-Datei enthält. Textdomain - Datei Passende ist , "{$domain}-{$locale}.mo"wo $domainder Text Domäne der Zeichenfolge zu übersetzen und $localeist das aktuelle Gebietsschema für die Website. Wenn diese Datei nicht gefunden wird, wird die ursprüngliche Zeichenfolge zurückgegeben, andernfalls wird sie geladen und WP zum nächsten Punkt weitergeleitet.
  3. Wenn die Textdomäne geladen wird, prüft WP, ob die erforderliche Zeichenfolge in dieser Datei enthalten ist. Wenn nicht, wird die ursprüngliche Zeichenfolge zurückgegeben, andernfalls leitet WP den nächsten Punkt weiter.
  4. Wenn die gefundene übersetzte Zeichenfolge eine Auflösung im Singular / Plural benötigt (z. B. bei Verwendung _n()), werden diese ausgeführt. Andernfalls leitet WP zum nächsten Punkt weiter.
  5. Filter-Hooks werden auf die übersetzte Zeichenfolge angewendet (siehe https://developer.wordpress.org/?s=gettext&post_type%5B%5D=wp-parser-hook ) und schließlich wird das Ergebnis zurückgegeben.

Damit?

Wenn Sie die Textdomäne des übergeordneten Themas in der Übersetzungsfunktion des untergeordneten Themas verwenden (vorausgesetzt, das übergeordnete Thema wird ausgeliefert und lädt die Textdomänendatei oder es befindet sich eine Übersetzungsdatei im Übersetzungsordner), gelangt WordPress zu Punkt 3. in der obigen Liste, und wenn ja Die Zeichenfolge ist in der Datei verfügbar (da sie im übergeordneten Thema verwendet wird). Sie wird übersetzt, andernfalls nicht.

Dies bedeutet, dass benutzerdefinierte Zeichenfolgen im übergeordneten Thema eine eigene Übersetzungsdatei benötigen.

Theoretisch ist es möglich, die übergeordnete Textdomäne in einer anderen Übersetzungsdatei zu verwenden, da WordPress in der Lage ist, dieselbe Textdomäne mehrmals zu laden und sie "zusammenzuführen". Dies hat jedoch Probleme, da möglicherweise nur eine Datei im Format "{$domain}-{$locale}.mo"in Übersetzungsordnern vorhanden ist ( siehe Punkt 2. in der obigen Liste).

Zusammenfassend lässt sich sagen, dass die einzige Möglichkeit, ein untergeordnetes Thema übersetzbar zu machen, wenn es Zeichenfolgen enthält, die nicht im übergeordneten Thema verwendet werden, die Verwendung einer eigenen Textdomäne und einer eigenen Übersetzungsdatei ist.

gmazzap
quelle
Hervorragende Antwort! Noch eine Frage: Angenommen, das übergeordnete Thema hat diese Zeichenfolge "Hintergrundfarbe", und im untergeordneten Element ist diese Zeichenfolge ebenfalls vorhanden. In diesem Fall kann ich also die Textdomäne des übergeordneten Themas sicher verwenden? __ ('Hintergrundfarbe', 'Eltern-Text-Domain')?
Ayanize
yes @Ayanize Wenn das übergeordnete Thema vorhanden ist __('background-color', 'parent-text-domain'), können Sie dasselbe im untergeordneten Thema verwenden, ohne dass Sie etwas anderes tun müssen, um es zu übersetzen.
gmazzap
0

Wenn Ihr untergeordnetes Thema andere Zeichenfolgen enthält als das übergeordnete Thema.

Die richtige Möglichkeit, eine andere Textdomäne in einem untergeordneten Thema zu verwenden, ist load_child_theme_textdomain()jetzt die Funktion. Sie können es genauso verwenden wie andere Funktionen zum Laden von Textdomänen.

In acht nehmen!

Im Gegensatz zu Plugin-Sprachdateien funktioniert ein Name wie my_child_theme-de_DE.mo NICHT. Obwohl Sie in Plugin-Sprachdateien die Textdomäne im Dateinamen angeben können, funktioniert dies NICHT mit Themen und untergeordneten Themen. Sprachdateien für Themen sollten NUR die Sprachverknüpfung enthalten .

Docker
quelle