Hay varias mejoras de internacionalización (i18n) en WordPress 6.7Echemos un vistazo juntos a estas mejoras.
Determinar si existe una traducción
A veces resulta útil saber si ya existe una traducción en la memoria sin tener que cargar primero la traducción para un campo de texto determinado. Nuevohas_translation()
puede hacer exactamente eso.
Para obtener información más detallada, consulte#52696 / [59029].
Correo electrónico en el entorno lingüístico del administrador
En la versión 4.7, WordPress añadió elFuncionalidad para permitir a los usuarios establecer su entorno lingüístico preferido. Cuando se envía un correo electrónico a un usuario, el correo se envía siempre en esa configuración regional y todos los demás reciben el correo en la configuración regional del sitio.
Ahora.WordPress 6.7 Otro paso adelante: cada vez que envíe un mensaje a la dirección de correo electrónico del administrador ( admin_email
) Al enviar un correo electrónico, WordPress comprueba si existe un usuario con la misma dirección de correo electrónico. Si es así, el correo electrónico se envía en la configuración regional de ese usuario.
Para obtener información más detallada, consulte#61518 / [59128].
Advertencia si la traducción se carga demasiado pronto
WordPress advierte ahora a los desarrolladores si cargan las traducciones demasiado pronto en un plugin o tema (antes de que el usuario actual lo sepa). Las funciones existentes (comoload_plugin_textdomain()
y )load_theme_textdomain()
se ha actualizado para retrasar la carga real hasta que laLógica de traducción instantánea. Esto reduce la probabilidad de que se produzcan advertencias e incluso mejora el rendimiento en algunos casos al evitar cargar traducciones que no son necesarias en una página determinada.
after_setup_theme
Al intentar cargar una traducción en o antes deinit
, WordPress intentará cargar el usuario actual antes de lo habitual sin dar a otros plugins la oportunidad de participar potencialmente en el proceso. También impedirá que cualquier plugin filtre las llamadas a la traducción, como el cambio de configuración regional o de ubicación de archivos. Por lo tanto, se añade esta advertencia para señalar este comportamiento inesperado.
Para obtener información más detallada, consulte#44937y[59127]responder cantando[59157].
hacer_lo_mal()
Por ejemplo, si llama alget_plugin_data()
(que intenta cargar las traducciones por defecto) o__()
Sin esperar al gancho, el plugin puede aparecer asíinit
. He aquí un ejemplo común que se encuentra en plugins fijos reales:
/**
* Nombre del Plugin: Awesome Plugin
*/
function mi_plugin_obtener_version() {
require_once ABSPATH . 'wp-admin/includes/plugin.php'; // Prevenir la llamada de traducción temprana estableciendo $translate.
// Prevenir la llamada de traducción temprana estableciendo $translate en false.
$plugin_data = get_plugin_data( __FILE__, false, /* $translate */ false ); return $plugin_data; /* $translate */ false; /* $translate */ false
return $plugin_data['Versión'];
}
define( 'MYPLUGIN_VERSION', myplugin_get_version() );
Si no establece explícitamente el$raducir
es, entonces la función traduce los metadatos del plugin por defecto. Dado que este plugin sólo necesita el número de versión, no es necesario traducir ningún otro campo.falso
get_plugin_data()
Otro ejemplo:
/**
* Nombre del Plugin: Awesome Plugin
*/
class Mi_Plugin_Asombroso {
public $name.
public function __construct() {
// Esto activa la carga de traducción justo a tiempo.
$this->name = __( 'Mi impresionante plugin', 'my-awesome-plugin' );
// ... hacer algo
}
}
// Esto instanciará inmediatamente la clase, mucho antes que `init`.
$myplugin = new My_Awesome_Plugin();
En este caso, la clase se instanciará inmediatamente en el archivo principal del plugin y el código del constructor de la clase utilizará la función de conversión. La instanciación de la clase puede posponerse hasta más tarde medianteinit
o evitarla posponiendo la llamada a la conversión hasta que sea realmente necesaria.
Si el plugin está afectado por esta advertencia, puede utilizar el siguiente código para averiguar la ruta al código que ha disparado la advertencia:
add_action(
'haciendo_lo_mal_corre',
static function ( 1TP4Nombre_de_la_función ) {
if ( '_load_textdomain_just_in_time' === $function_name ) {
debug_print_backtrace();
}
}
).
En este caso.Monitor de consultasLas herramientas de desarrollo como éstas también son útiles.