Bisher habe ich einige Übersetzungen in Wordpress bearbeitet und versucht, die offizielle gettext-Dokumentation zu lesen, aber ich verstehe nicht eine vielleicht einfache Sache: Was sind die Unterschiede zwischen diesen Starts wie __ (, _e (usw.?) Und sogar mehr: welche anderen gibt es daneben? Danke im Voraus!
Frank
localization
Circuit Circus
quelle
quelle
Antworten:
__
(doppelter Unterstrich) ist die Basisübersetzungsfunktion. Es übersetzt eine Zeichenfolge und gibt sie als Zeichenfolge zurück._e
macht das gleiche wie__
, aber Echo ist das Ergebnis sofort._x
ist die kontextbezogene Übersetzungsfunktion. Es gibt eine zweite Option, um den Personen, die die Übersetzung durchführen, einen Kontext bereitzustellen._ex
ist das gleiche wie_x
, aber Echo ist das Ergebnis.Anwendungsbeispiel
_x
:Manchmal kann dieselbe Zeichenfolge in anderen Sprachen unterschiedlich sein. Durch die Bereitstellung von Kontext für die Übersetzer können sie die richtigen Wörter auswählen.
Verknüpfungsfunktionen:
esc_attr__
: Entspricht__
dem Ergebnis, führt es aber auch durchesc_attr
.esc_html__
: Entspricht__
dem Ergebnis, führt es aber auch durchesc_html
.esc_attr_e
: Entspricht_e
dem Ergebnis, führt es aber auch durchesc_attr
.esc_html_e
: Entspricht_e
dem Ergebnis, führt es aber auch durchesc_html
.esc_attr_x
: Entspricht_x
dem Ergebnis, führt es aber auch durchesc_attr
.esc_html_x
: Entspricht_x
dem Ergebnis, führt es aber auch durchesc_html
._n
ist der Pluralisierungshandler. Beispiel:In diesem Beispiel gibt es zwei Möglichkeiten, die Anzahl der Tacos zu bestimmen, je nachdem, ob sie singulär sind oder nicht. Die erste Verwendung von $ number teilt der
_n
Funktion mit, welche Version verwendet werden soll. Die zweite Verwendung von $ number erfolgt im Sprintf, um% d durch die tatsächliche Zahl in der Zeichenfolge zu ersetzen.Es gibt keine äquivalente Echofunktion für
_n
, aber es gibt eine Funktion mit dem Namen_nx
. Es ist eine Kombination aus_n
und_x
. Pluralisierung und Kontext._n_noop
ist eine besondere. Es wird zum Übersetzen pluralisierter Zeichenfolgen verwendet, führt die Übersetzung jedoch nicht sofort durch. Dies ist nützlich, wenn Sie die Zeichenfolgen zentralisieren möchten, die Arbeit jedoch an einer anderen Stelle ausführen möchten. Die Funktion, die die Arbeit tatsächlich woanders erledigt, isttranslate_nooped_plural
.Beispiel:
Dies wird nicht viel verwendet, kann aber für die Organisation nützlich sein. Wenn Sie beispielsweise alle Ihre Zeichenfolgen in einer Datei ablegen und dann an anderer Stelle referenzieren, ist dies nicht möglich
_n
. Sie benötigen dazu so etwas_n_noop
._nx_noop
ist das gleiche wie_n_noop
, kann aber auch einen Kontext für die Übersetzer annehmen, das gleiche wie_x
.Beachten Sie, dass Sie die Domäne entweder in den Funktionsaufruf noop oder in den Funktionsaufruf translate_nooped_plural einfügen können. Was für Ihre Organisation sinnvoller ist. Wenn beide eine Domain haben, gewinnt die an den Noop-Anruf übergebene.
number_format_i18n
ist das Äquivalent zu PHPs integriertem number_format , fügt jedoch die Behandlung für Dinge wie Dezimalstellen usw. hinzu, die sich in anderen Ländereinstellungen unterscheiden.date_i18n
ist das Äquivalent zum integrierten Datum von PHP , mit all den relevanten Handhabungen auch dort. Monatsnamen, Tagesnamen usw.Brechen Sie auch niemals die Gesetze . Nur eine Erinnerung. :) :)
quelle
__ (), _e () und _x (), _ex ()
__()
und_e()
sind im Wesentlichen sowohl ein Wrapper vontranslate()
(nicht direkt verwenden) als auch fast gleich.Der Unterschied besteht darin, dass
__()
die übersetzte Zeichenfolge zurückgegeben und wiedergegeben_e()
wird. Beiden muss eine Zeichenfolge als erforderlicher Parameter und normalerweise, obwohl optional, auch eine Textdomäne zugeführt werden.Analog gibt es
_x()
und_ex()
, mit denen Sie einen Kontext angeben können, der beschreiben kann, wo die Zeichenfolge angezeigt wird. Wenn Ihr Projekt mehr als ein paar zehn übersetzbare Zeichenfolgen enthält, ist die Verwendung des Kontexts sehr sinnvoll.Beachten Sie auch die Existenz von
_n()
und_nx()
für Pluralformen.Beispiel für die allgemeine Verwendung
Parameter
Alle Parameter außer
$number
sind Zeichenfolgen. Alle außer$domain
sind erforderlich.Weitere Flexibilität mit Variablen und sprintf ()
Wenn Ihre Zeichenfolgen variable Zahlen oder Wörter enthalten, verwenden Sie
sprintf()
:Zusätzliche Ressourcen
Einige zusätzliche Ressourcen für das kommende WordPress I18n Ninja:
quelle
Ich bin kein Experte für Übersetzungen, aber die WordPress-Codex-Seite enthält eine gute Dokumentation und erklärt den Grund für die Verwendung jeder Instanz.
Von den Codex-Seiten:
__()
Wird verwendet, wenn die Nachricht als Argument an eine andere Funktion übergeben wird.
_e()
wird verwendet, um die Nachricht direkt auf die Seite zu schreiben. Weitere Details zu diesen beiden Funktionen:__('message')
Durchsucht das Lokalisierungsmodul nach der Übersetzung von 'message' und übergibt die Übersetzung an die PHP-return-Anweisung. Wenn für 'message' keine Übersetzung gefunden wird, wird nur 'message' zurückgegeben.
_e('message')
Durchsucht das Lokalisierungsmodul nach der Übersetzung von 'message' und übergibt die Übersetzung an die PHP-Echoanweisung. Wenn für 'message' keine Übersetzung gefunden wird, wird nur 'message' wiedergegeben.
Beachten Sie, dass Sie bei der Internationalisierung eines Themes oder Plugins a verwenden sollten
"Text Domain"
.Das gettext Framework kümmert sich um den größten Teil von WordPress. Es gibt jedoch einige Stellen in der WordPress-Distribution, an denen gettext nicht verwendet werden kann:
Link zur Codex-Seite
Zusätzliche Informationen darüber, wann gettext nicht funktioniert
Hoffentlich beantwortet das Ihre Frage, wenn nicht, lassen Sie es uns wissen und vielleicht kann jemand anderes helfen oder ich kann noch etwas recherchieren.
quelle