Es gibt verschiedene Verbesserungen bei der Internationalisierung (i18n) in WordPress 6.7Lassen Sie uns gemeinsam einen Blick auf diese Verbesserungen werfen.
Feststellen, ob eine Übersetzung existiert
Manchmal ist es nützlich zu wissen, ob eine Übersetzung bereits im Speicher vorhanden ist, ohne dass Sie die Übersetzung für ein bestimmtes Textfeld erst laden müssen. Neuhas_translation()
Funktion kann genau das tun.
Ausführlichere Informationen finden Sie unter#52696 / [59029].
E-Mail in der Sprachumgebung des Administrators
In Version 4.7 fügte WordPress die FunktionFunktionen, die es Benutzern ermöglichen, ihre bevorzugte Sprachumgebung einzustellen. Wenn Sie eine E-Mail an einen Benutzer senden, wird die E-Mail immer in diesem Gebietsschema gesendet und alle anderen erhalten die E-Mail in dem Gebietsschema der Website.
Jetzt.WordPress 6.7 Ein weiterer Schritt nach vorn: Jedes Mal, wenn Sie eine Nachricht an die E-Mail-Adresse des Administrators senden ( admin_email
) Wenn Sie eine E-Mail senden, prüft WordPress, ob es einen Benutzer mit derselben E-Mail-Adresse gibt. Ist dies der Fall, wird die E-Mail im Gebietsschema dieses Benutzers versendet.
Ausführlichere Informationen finden Sie unter#61518 / [59128].
Warnung, wenn die Übersetzung zu früh geladen wird
WordPress warnt Entwickler jetzt, wenn sie Übersetzungen zu früh in ein Plugin oder Theme laden (bevor der aktuelle Benutzer davon weiß). Bestehende Funktionen (wie z.B.load_plugin_textdomain()
und )load_theme_textdomain()
wurde aktualisiert, um das tatsächliche Laden zu verzögern, bis der bestehende KernLogik der Sofortübersetzung. Dies verringert die Wahrscheinlichkeit, dass Warnungen ausgelöst werden, und verbessert in einigen Fällen sogar die Leistung, indem das Laden von Übersetzungen, die auf einer bestimmten Seite nicht benötigt werden, vermieden wird.
after_setup_theme
Wenn Sie versuchen, eine Übersetzung zu laden, die am oder vor deminit
wird WordPress versuchen, den aktuellen Benutzer früher als üblich zu laden, ohne anderen Plugins die Möglichkeit zu geben, sich an diesem Prozess zu beteiligen. Es verhindert auch, dass Plugins Übersetzungsaufrufe filtern, wie z.B. das Wechseln des Gebietsschemas oder des Dateispeicherorts. Diese Warnung wird daher hinzugefügt, um auf dieses unerwartete Verhalten hinzuweisen.
Ausführlichere Informationen finden Sie unter#44937und[59127]im Gesang antworten[59157].
_doing_it_wrong()
Wenn Sie zum Beispiel die Funktionget_plugin_data()
(die standardmäßig versucht, Übersetzungen zu laden) oder__()
Ohne auf den Hook zu warten, könnte das Plugin wie folgt ausseheninit
. Hier ist ein gängiges Beispiel, das in aktuellen festen Plugins zu finden ist:
/**
* Plugin Name: Awesome Plugin
*/
function meinplugin_get_version() {
require_once ABSPATH . 'wp-admin/includes/plugin.php'; // Verhindern Sie einen frühen Übersetzungsaufruf durch Setzen von $translate.
// Verhindern Sie einen frühen Übersetzungsaufruf, indem Sie $translate auf false setzen.
$plugin_data = get_plugin_data( __FILE__, false, /* $translate */ false ); return $plugin_data; /* $translate */ false; /* $translate */ false
return $plugin_data['Version'];
}
define( 'MYPLUGIN_VERSION', myplugin_get_version() );
Wenn Sie nicht explizit die Option$übersetzen
ist, dann übersetzt die Funktion standardmäßig die Plugin-Metadaten. Da dieses Plugin nur die Versionsnummer benötigt, ist es nicht notwendig, andere Felder zu übersetzen.falsch
get_plugin_data()
Ein weiteres Beispiel:
/**
* Plugin Name: Awesome Plugin
*/
class Mein_Awesome_Plugin {
public $name.
public function __construct() {
// Dies löst das Laden der Just-in-Time-Übersetzung aus.
$this->name = __( 'My Awesome Plugin', 'my-awesome-plugin' );
// ... etwas tun
}
}
// Damit wird die Klasse sofort instanziiert, lange vor `init`.
$myplugin = new My_Awesome_Plugin();
Hier wird die Klasse sofort in der Haupt-Plugin-Datei instanziiert und der Code im Klassenkonstruktor verwendet die Konvertierungsfunktion. Die Instanziierung der Klasse kann auf einen späteren Zeitpunkt verschoben werden durchinit
oder vermeiden Sie es, indem Sie den Konvertierungsaufruf verschieben, bis er wirklich benötigt wird.
Wenn das Plugin von dieser Warnung betroffen ist, können Sie den folgenden Code verwenden, um den Pfad zu dem Code herauszufinden, der die Warnung ausgelöst hat:
add_action(
'doing_it_wrong_run',
statische Funktion ( 1TP4Funktionsname ) {
if ( '_load_textdomain_just_in_time' === $function_name ) {
debug_print_backtrace();
}
}
).
In diesem Fall.Abfrage-MonitorEntwicklungswerkzeuge wie diese sind ebenfalls nützlich.