webentwicklung-frage-antwort-db.com.de

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

Entschuldigung für die Noob-Frage.

Ist eine Textdomäne für ein untergeordnetes Thema erforderlich? Ich erstelle ein einfaches untergeordnetes Thema ohne deklarierte Textdomäne. Wenn ich also zu übersetzende Zeichenfolgen verwende, sollte ich die Textdomäne des übergeordneten Themas verwenden (ja, das übergeordnete Thema hat eine geladene Textdomäne und hat auch Mo/PO-Dateien).

Fügen Sie beispielsweise diese Zeile in meine untergeordnete Themenvorlage ein

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

Wird über String übersetzt?

Danke im Voraus

8
Ayanize

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

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


Übersetzungs-Workflow

Wenn WordPress in einer Übersetzungsfunktion auf einen String stößt, geschieht Folgendes:

  1. Überprüft, ob eine Übersetzung für die gewünschte Textdomäne geladen wurde (über load_plugin_textdomain oder load_theme_textdomain oder load_textdomain ), wenn ja, gehe zu Punkt 3.
  2. Überprüft, ob der Übersetzungsordner (standardmäßig wp-content/languages) eine passende Textdomain-Datei enthält. Die passende Textdomain-Datei lautet "{$domain}-{$locale}.mo", wobei $domain die Textdomäne der zu übersetzenden Zeichenfolge und $locale das aktuelle Gebietsschema für die Website ist. Wenn diese Datei nicht gefunden wird, wird die ursprüngliche Zeichenfolge zurückgegeben, andernfalls wird sie geladen und WP leitet zum nächsten Punkt weiter.
  3. Wenn die Textdomäne geladen ist, prüft WP, ob die erforderliche Zeichenfolge in dieser Datei enthalten ist. Wenn nicht, wird die ursprüngliche Zeichenfolge zurückgegeben, andernfalls leitet WP zum nächsten Punkt weiter.
  4. Wenn die gefundene übersetzte Zeichenfolge eine singuläre/plural-Auflösung benötigt (z. B. bei Verwendung von _n() ), werden diese ausgeführt. Ansonsten WP weiter zum nächsten Punkt.
  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.

So?

Wenn Sie die Textdomäne für das übergeordnete Thema in der Übersetzungsfunktion für das untergeordnete Thema verwenden (vorausgesetzt, das übergeordnete Thema wird ausgeliefert und lädt die Textdomänendatei, oder es enthält eine Übersetzungsdatei im Übersetzungsordner), gelangt WordPress zum Punkt 3. in der Liste oben, und so, wenn die Zeichenfolge in der Datei verfügbar ist (weil im übergeordneten Thema verwendet), wird es übersetzt, sonst 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 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 im übergeordneten Thema nicht verwendet werden, darin besteht, eine eigene Textdomäne und eine eigene Übersetzungsdatei zu verwenden.

6
gmazzap

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

Die richtige Möglichkeit, eine andere Textdomäne in einem untergeordneten Thema zu verwenden, ist jetzt die Funktion load_child_theme_textdomain(). 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.

0
docker