Kann ich die Plugin-Textdomäne für im Core verwendete Begriffe weglassen?

10

Ich habe ein Plugin , das Post-Status in Post-Typ-Admin-Menüs einfügt. Ich bin gerade dabei, es zu internationalisieren, und ich frage mich, wie ich mit dieser Situation umgehen soll.

Das Plugin verwendet einige eindeutige Zeichenfolgen, die eine Textdomain wie die folgende erhalten:

__( 'Select the post statuses to <strong>exclude</strong> from post type admin menus', 'csmpmsi' )

Aber es gibt auch Fälle, in denen ich ein kernbezogenes Wort für ihre kernbezogene Bedeutung wie folgt verwende : __( 'Pages' ). In dieser Situation erscheint es mir vollkommen sinnvoll, die Textdomäne auszuschließen und Begriffe zu nutzen, die bereits im Kern lokalisiert sind. Der Kodex scheint jedoch sehr explizit zu sein:

Wenn Sie versuchen, ein Plugin zu übersetzen, gelten die gleichen Hinweise wie oben, außer dass

  • Sie müssen eine Domain verwenden, die in einen Hook Ihres Plugins geladen ist

  • Jeder Übersetzungsaufruf muss __ werden ('Text', 'Domain-Name').

Also ist das WP-koscher?

mrwweb
quelle
1
Vielen Dank, dass Sie eine zum Nachdenken anregende Frage gestellt haben. Die Antworten (von toscho und Mark Kaplun) waren für mich interessant und nützlich!
Webaware

Antworten:

14

Verlassen Sie sich bei der Übersetzung niemals auf Kernzeichenfolgen, sie können sich contextjederzeit ändern oder einen Parameter erhalten. Sobald dies geschieht, erhalten Ihre Benutzer eine teilweise übersetzte Oberfläche, und Ihre Übersetzer haben keine Möglichkeit, dies zu beheben.

Denken Sie auch daran, dass nicht überall dieselbe Zeichenfolge mit demselben Wort übersetzt werden muss. Auch ohne Kontextparameter kann es nützlich sein, in einigen Sprachen eine andere Übersetzung für Ihr Plugin zu verwenden. Dies wäre jedoch nicht möglich, wenn Sie die Zeichenfolge nicht in Ihr Plugin aufnehmen.

Sehen Sie sich diese Chat-Diskussion an, die wir vor einigen Tagen zu diesem Thema geführt haben.

Fuxia
quelle
Beachten Sie auch, dass die Zeichenfolge auch dann in Ihrer POT-Datei angezeigt wird, wenn sie keine Textdomäne enthält.
Scribu
@scribu Hängt vom Parser ab. Das Codestyling-Lokalisierungs-Plugin ignoriert es.
Fuxia
Es scheint, dass es einige Meinungsverschiedenheiten zwischen dieser Antwort und dieser Antwort auf eine nahezu identische Frage gibt ...
mrwweb
4

Ja, aber bitte nicht. Dies ist wie ein Codierungsstandard. Befolgen Sie ihn besser, auch wenn Sie durch Umgehen einen kleinen Vorteil erzielen können.

Bessere Gründe:

  1. In Version 3.5 hat WordPress keine Monolith-Übersetzungsdateien, es wurde aus Leistungsgründen in drei Teile geteilt. Wenn sich dieser Trend fortsetzt, können Sie sicher sein, dass die Standarddomäne überhaupt geladen wird, wenn Sie versuchen, sie zu verwenden __('Pages')?

  2. Sie speichern keine Arbeit im Localizer - Übersetzungswerkzeuge wie poedit wissen nicht, wie sie mit zwei Übersetzungsdomänen in einer Datei umgehen sollen, und in Ihrem Beispiel wird eine .po-Datei generiert, die das Wort "Seiten" enthält, selbst wenn Sie dies tun Verwenden Sie dazu die Standarddomäne. Der Lokalisierer überprüft die tatsächliche Verwendung der von ihm übersetzten Zeichenfolgen nur, wenn er den Kontext verstehen muss, damit er die unterschiedliche Domäne nicht bemerkt und das Wort übersetzt. Wenn der Lokalisierer seine Tools kennt, verfügt er außerdem über eine Übersetzungsdatenbank, die auf den WordPress-Kernübersetzungsdateien basiert und es Poedit ermöglicht, Wörter wie "Seiten" automatisch zu übersetzen.

Mark Kaplun
quelle
0

Du kannst es versuchen

add_action('wp',function(){
    load_default_textdomain();
    _e('Settings');
});

Oder

add_action('wp',function(){
    $locale = is_admin() ? get_user_locale() : get_locale();
    load_textdomain( 'default', WP_LANG_DIR . "/$locale.mo" );
    load_textdomain( 'default', WP_LANG_DIR . "/admin-$locale.mo" );

    // WPMU
    //load_textdomain( 'default', WP_LANG_DIR . "/ms-$locale.mo" );
    //load_textdomain( 'default', WP_LANG_DIR . "/admin-network-$locale.mo" );

    _e('Settings');
    _e('First Name');
    _e('Last Name');
});

Referenz: https://v123.tw/use-wordpress-core-translation/

Viel Glück!!

Ann
quelle