Frage

Plugin -Abfragen Remote -API und unter bestimmten Umständen (meistens Fehler) Zeigt Textnachrichten aus API -Antworten an. Alle Nachrichten in API-Antworten sind in englischer Sprache, aber da sie mehr oder weniger in Plugin integriert sind, wäre es sinnvoll, sie in verschiedenen Sprachen lokalisiert und angezeigt zu machen, um die Schnittstelle von Plugin zu entsprechen.

Theoretische Frage - Sollten solche Nachrichten überhaupt lokalisiert werden oder sind sie aus dem Rahmen für die Lokalisierung?

Codierungsfrage - Wie lokalisieren Sie diese überhaupt und behalten die Kompatibilität mit verwandten Tools? Macht so etwas wie __( $message ); sogar Sinn machen?

In der Vergangenheit habe ich benutzt Lokalisierung der Codestie Das basiert auf der Quelle des Plugins zum Extrahieren von Zeichenfolgen ... aber es gibt nichts zu extrahieren, da Strings nicht im Körper des Plugins enthalten sind.

War es hilfreich?

Lösung

Sollten solche Nachrichten überhaupt lokalisiert werden oder sind sie für die Lokalisierung nicht mehr?

Ja, sie sollten lokalisiert sein ... aber nicht von dem von der API zurückgegebenen Text abhängig.

Macht so etwas wie __( $message ); sogar Sinn machen?

Nicht wirklich. Zunächst stellen Sie keine Textdomäne für die Zeichenfolge in der Lokalisierung zur Verfügung. Es sollte wirklich sein __( $message, 'my-text-domain' );. Auch dann, wenn Sie keine haben statisch Liste der Werte für $message, Lokalisierung ist ein strittiger Punkt.

Was Sie stattdessen tun können

Das Robustheitsprinzip ist eine großartige Sache, wenn Sie Inhalte von einer externen API integrieren. Sie können niemals vollständig vertrauen, was die API Ihnen gibt ... die ursprünglichen Eigentümer könnten Dinge ändern, ohne Sie zu benachrichtigen, oder ihr System kann brechen und fehlerhafte Informationen liefern. Also solltest du immer:

Seien Sie konservativ in dem, was Sie senden; Sei liberal in dem, was du akzeptierst.

Wenn Sie bereits wissen, welchen Inhalt die API zurückgibt (dh eine statische Liste von Zeichenfolgen), legen Sie das in Ihr Plug-In ein. Verwenden Sie dann eine Sanitärmethode, um zuzuordnen, was die API zu Ihren lokalisierten Zeichenfolgen zurückkehrte.

Zum Beispiel:

$map = array( 
    'This is one return' => __( 'This is one return', 'my-text-domain' ),
    'This is another' => __( 'This is another', 'my-text-domain' )
);

sanitize_api_feedback( $api_sent ) {
    return $map[$api_sent];
}

Auf diese Weise Sie Verwenden Sie niemals die Rohausgabe der externen API Führen Sie es aber immer durch Ihren eigenen Filter. Sie haben die vollständige Kontrolle über die verwendeten Textzeichenfolgen und können sie auch über die Standard -Lokalisierungsfilter ausführen.

Wenn die API-Rückgabe frei ist

Wenn Sie keine Liste statischer Zeichenfolgen haben, die von der API zurückgegeben werden, funktioniert dies nicht. Wenn die API freie Inhalte zurückgibt, sollten Sie dann entweder:

  1. Überlassen Sie die Lokalisierung der API selbst (wenn möglich)
  2. Stellen Sie den Endbenutzer einen anderen Übersetzungsdienst zur Verfügung ... vielleicht Google Übersetzer

Es gibt keine Möglichkeit, dass Ihr Plug-In für die Übersetzung von Freiform-Saiten im laufenden Fliegen verantwortlich sein kann. Aber eine statische Liste leicht erwarteter Fehlermeldungen? Das ist definitiv etwas, das Sie können und sollten.

Andere Tipps

Ich denke, ich benutze __( $message ) ist total in Ordnung. Ich denke auch, dass man erwarten würde, dass die API -Nachrichten relativ konstant sind. Ich würde sagen, der beste Weg, dies zu tun, wäre, eine Domäne zu verwenden, die die API selbst und nicht Ihr Plugin bedeutet, damit die Übersetzungen von jedem wiederverwendet werden können, der sonst auf dieselbe API zugreift: __( $message, 'wonder-api' ).

Ich würde jedoch zuerst recherchieren, wenn die API die Lokalisierung an sich unterstützt. In diesem Fall sollte das Lokalisierungsprotokoll der API verwendet werden.

Im Idealfall versuchen Sie jedoch, einen "Antwortcode" von der API und nicht von einer Antwortnachricht zu erhalten, damit Sie Ihre eigenen Nachrichten an die Antwortcodes abbilden können. Die meisten API liefern neben den Nachrichten Antwortcodes.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top