Configuración de WPLANG desde un complemento


11

Para un único wordpress de sitio, el idioma debe establecerse desde wp-config.php's WPLANG, pero ¿es posible establecer desde mi complemento que anule el valor predeterminado?


1
El enlace también aparece en la columna derecha de esta página, pero creo que vale la pena señalar en los comentarios otro enfoque para una situación similar: wordpress.stackexchange.com/a/53678/12615
brasofilo

Respuestas:


16

En wp-includes/l10n.phpencontrarás la función get_locale(). Ofrece un filtro; puedes configurar el idioma e ignorar la constante:

function get_locale() {
    global $locale;

    if ( isset( $locale ) )
        return apply_filters( 'locale', $locale );

    // WPLANG is defined in wp-config.
    if ( defined( 'WPLANG' ) )
        $locale = WPLANG;

    // If multisite, check options.
    if ( is_multisite() ) {
        // Don't check blog option when installing.
        if ( defined( 'WP_INSTALLING' ) || ( false === $ms_locale = get_option( 'WPLANG' ) ) )
            $ms_locale = get_site_option('WPLANG');

        if ( $ms_locale !== false )
            $locale = $ms_locale;
    }

    if ( empty( $locale ) )
        $locale = 'en_US';

    return apply_filters( 'locale', $locale );
}

Para cambiarlo por complemento, use el filtro 'locale'. Ejemplo:

add_filter( 'locale', 'wpse_52419_change_language' );
function wpse_52419_change_language( $locale )
{
    return 'de_DE';
}

Funciona como una magia. Pero en mi caso, se devolverá un error: Fatal error: Cannot redeclare get_locale(). Así que simplemente cambié el nombre de la función de get_locale()a nano_get_locale(), y está funcionando maravillosamente.
Mayeenul Islam

3
Debe @MayeenulIslam no copiar la get_locale()función, que es una cita del núcleo. Todo lo que necesitas es el último bloque de código.
fuxia

genial @toscho, muchas gracias. Sin embargo, esto no funciona si enciendo mi OPCache en mi MAMPpro local ... ¿es así o hay una solución?
Raphael Jeger

@RaphaelJeger Esto no puede verse afectado por OPCache, solo un chache de salida puede hacerlo. Si aún tiene este problema, haga una nueva pregunta.
fuxia
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.