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?

Howard
fuente
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';
}
fuxia
fuente
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