¿Sabías que desde la versión 6.3 WordPress utiliza una parte de la memoria disponible para la carga de idiomas aunque no los utilices?
Pues sí, resulta que da igual si no piensas añadir idiomas a tu instalación de WordPress, si se va a quedar siempre en inglés de Estados Unidos (en_US por defecto), por defecto siempre se reservan como poco 200 Kb de memoria para cada solicitud realizada, por si hubiese que cargar algún idioma.
Es un gancho que existe en el archivo /wp-includes/l10n.php que, por otra parte, si usas algún idioma diferente del por defecto, mejora la carga de idiomas.
El código para anular esta instrucción, y acelerar la carga de todos los procesos de WordPress, es el siguiente:
/* Acelerar WP si solo es necesario el ingles */
add_filter('pre_load_textdomain', '__return_false', -42);
Al ser importante que se anule cuanto antes la carga de idiomas el lugar ideal en el que añadir el código sería como plugin imprescindible, que puedes crear por tu cuenta para tus personalizaciones, así te aseguras que se carga antes de los plugins.
Lo importante es que funciona, e incluso teniendo configurado tu sitio para cargar otro idioma, que una vez aplicado el código no se cargará ningún idioma aunque esté instalado y configurado, sino que solo se usará el idioma por defecto de WordPress (en_US).
Y es debido a que con esa simple línea de código impides que WordPress cargue cualquier idioma desde la instrucción de pre_load_textdomain, así que es un código que deberías añadir en cualquier instalación de WordPress que no requiera añadir idiomas.
Es más, yo creo que debería ser el comportamiento por defecto de WordPress mientras que el administrador no decidiese añadir algún idioma adicional, pero eso quedará para otra ocasión.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!








Pero eso significa que si solo queremos mostrar español de españa solo cargará en inglés? por que para mi seria un problema
No, para eso no vale, solo para mostrar en el inglés de EEUU por defecto
Lo he probado y cambia todo mi sitio a inglés aunque tenga definido el idioma del sitio en español. Creía que respetaba el idioma instalado
Que va, ya lo indico al final del texto, que no carga ningún idioma, nada.
Bueno, pues me quedo a la espera de la segunda parte, que sería la interesante a conocer: «Es más, yo creo que debería ser el comportamiento por defecto de WordPress mientras que el administrador no decidiese añadir algún idioma adicional, pero eso quedará para otra ocasión.»
Genial como siempre conocer estos detalles, Fernando. Sin embargo, en este sentido yo creo (mi humilde opinión) que precisamente lo que WordPress sigue necesitando, tras tantos y tantos años, es la capacidad que han tenido otros CMS muy conocidos para ser multilenguaje desde sus cimientos, de forma total. Esto incluso es uno de los principales motivos para que, algunos del sector que conozco, sigan utilizando esos otros CMS en ciertos proyectos en lugar de WordPress.
Estoy totalmente de acuerdo
¿Y habrá una forma de que solo cargue el español y ya no el resto de idiomas?
Prueba este:
/* Forzar idioma español globalmente */
add_filter(‘load_textdomain_mofile’, function ($mofile, $domain) {
// Si el archivo de idioma no es español, redirige al español
$es_mofile = WP_LANG_DIR . «/$domain/es_ES.mo»;
// Comprueba si el archivo español existe
if (file_exists($es_mofile)) {
return $es_mofile;
}
// Si no existe el archivo español, devuelve el archivo original
return $mofile;
}, 10, 2);
Funcionar funciona perfecto, eso sí, no optimiza la carga porque se carga el textdomain, sirve para lo que es: forzar el español como idioma del sitio 😉
Gracias por compartirlo 🙂
Pues habrá que depurar un poco:
// Fuerza el idioma del sitio a español
add_filter(‘locale’, function ($locale) {
return ‘es_ES’; // Define español como único idioma
}, 10, 1);
// Bloquea la carga de archivos de traducción que no sean en español
add_filter(‘load_textdomain_mofile’, function ($mofile, $domain) {
// Verifica si el archivo es para español
if (strpos($mofile, ‘es_ES’) === false) {
return false; // Bloquea la carga de otros idiomas
}
return $mofile; // Permite español
}, 10, 2);
// Asegura que WooCommerce use español si está activo
add_action(‘init’, function () {
if (class_exists(‘WooCommerce’)) {
unload_textdomain(‘woocommerce’);
load_textdomain(‘woocommerce’, WP_LANG_DIR . ‘/plugins/woocommerce/es_ES.mo’);
}
}, 20);
Aquí, el textdomain específico (por ejemplo, woocommerce) sigue cargándose, pero se asegura de que solo cargue el archivo de traducción para español (es_ES.mo). Esto significa que, aunque el textdomain en sí esté activo, el archivo de idioma cargado será únicamente el necesario para el español.