Textdomänen über mehrere Plugins und Themes hinweg

7

Eine häufige Situation: Ein Entwickler erstellt für einen Kunden eine ganze Site, die natürlich auf WordPress basiert.

Diese Seite enthält viele benutzerdefinierte Plugins sowie ein benutzerdefiniertes Thema - möglicherweise ein anderes Thema oder ein oder zwei untergeordnete Themen.

Es macht nicht viel Sinn, dass all diese benutzerdefinierten Plugins und dergleichen eine eigene Textdomäne haben. Ein einzelner Übersetzer wird wahrscheinlich die ganze Arbeit erledigen. Es ist wahrscheinlich auch viel einfacher, einen einzigen Satz von Übersetzungen zu verwalten.

Also, wie funktioniert Verwenden Sie eine eine einzelne Text Domain über mehrere Plugins und / oder Themen?

Nur damit wir klar sind, möchte ich das Äquivalent von load_plugin_textdomainund load_theme_textdomaindas ich für mehrere Plugins / Themes verwenden kann.

chrisguitarguy
quelle
Diese Frage ist jetzt ziemlich alt. Haben Sie es geschafft, eine gute Lösung für dieses Problem zu finden?
Swen
Nee. Ich habe versucht, Übersetzungen über eine einzelne Site mit einer Auswahl an benutzerdefinierten Plugins und Themen zu verwalten. Ich denke, @fuxia hat Recht, wenn ich jetzt zurückblicke: sollte nicht gemacht werden.
Chrisguitarguy

Antworten:

3

Das tust du nicht. Übersetzungen sind Teil des Commit-Verlaufs jedes Elements. Sie sollten so getrennt wie der PHP-Code aufbewahrt werden. In Bezug auf die Leistung gewinnen Sie mit einer kombinierten Textdomäne nicht viel. Tatsächlich könnten Sie an Leistung verlieren, denn wenn Sie dieses eine Übersetzungsarray fast überall benötigen, können Sie es nicht mehr selektiv laden oder zerstören, wenn Sie es nicht benötigen.

Eine Möglichkeit, das zu tun, was Sie wollen, ist ein separates Plugin mit dem Namen "Client Name Translations", das alle darin enthaltenen Zeichenfolgen dupliziert und die Übersetzer nur diese Datei übersetzen lässt. Bereiten Sie sich auf die Synchronisierungshölle vor. :) :)

Oder Sie verschieben alle Zeichenfolgen in eine separate Datei mit einem einzigen Array.

<?php 
return array(
    'name1' => __( 'Name one', 'your_text_domain' ),
    'name2' => __( 'Name two', 'your_text_domain' )
);

… Und require_oncediese Datei in allen anderen Unterprojekten (oder schreiben Sie ein Wrapper-Plugin dafür). Dann greifen Sie über ihre Schlüssel auf die Zeichenfolgen zu.

Ich würde jedoch versuchen, für alle Projekte separate Commit-Historien zu führen. Sobald Sie einen von ihnen wiederverwenden möchten, müssen Sie sowieso alles neu schreiben.

Fuxia
quelle
1
Alles ist ein einzelnes Repo, also eine Commit-Historie.
Chrisguitarguy