✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Cambiar el idioma de su sitio de WordPress (locale) dinámicamente

18

Hay algunos complementos multilingües fantásticos para WordPress, sin embargo, para un proyecto de cliente, necesitaba algo mucho más flexible, ya que este cliente en particular necesitaba atender a varios países que hablaban varios idiomas.

En resumen, el cliente necesitaba poder tener una instancia multisitio que tuviera un país y un idioma configurados como predeterminados, y la capacidad de anular el país y el idioma en cada página/publicación.

Creación de un complemento multilingüe

Si suficientes personas me molestan para hacerlo, puedo considerar lanzar todo como un complemento independiente, sin embargo, el corazón del complemento multilingüe que construyo se basa en el localefiltro de WordPress, y el corazón del complemento reside en el siguiente fragmento de código:


function wholesomecode_example_redefine_locale( $locale) {

    $country = get_post_meta( get_the_id(), '_wholesomecode_example_global_country_override', true );
    $lang    = get_post_meta( get_the_id(), '_wholesomecode_example_global_language_override', true );

    if (( empty( $lang) ||! (is_page() || is_single() || is_singular()) )) {
        $country = get_theme_mod( 'wholesomecode_example_multilingual_country', 'gb' );
        $lang    = get_theme_mod( 'wholesomecode_example_multilingual_language', 'en' );
    }

    if ('default' !== $country) {
        $locale = $lang. '_'. strtoupper( $country );
    } else {
        $locale = $lang. '-'. $country;
    }

    return $locale;

}
add_filter( 'locale', 'wholesomecode_example_redefine_locale', 10 );

¡Tada! Su configuración regional ahora está configurada, y su sitio multilingüe ahora debería cambiar de idioma según la meta de su página/sitio.

¡Esperar! ¡Mis traducciones predeterminadas de WordPress Core no funcionan!

Este es un problema con el que me encontré, y no pude por mi vida resolverlo. Mi tema se tradujo perfectamente después de haber agregado los archivos .mo y .po relevantes, sin embargo, las traducciones predeterminadas del núcleo de WordPress (como el mensaje ‘Dejar una respuesta’ en la plantilla de comentarios) no se estaban traduciendo.

¡Resulta que la solución fue bastante simple! Aunque me había encargado de las traducciones de dominio personalizadas, me había olvidado de poner un código simple en mi tema: load_default_textdomain().


load_default_textdomain();

Si he reducido un par de horas de su depuración con ese ‘un consejo extraño’, ¡de nada!

Fuente de grabación: wholesomecode.ltd

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More