Définition de WPLANG à partir d'un plugin

11

Pour un seul site wordpress, la langue doit être définie à partir wp-config.phpde WPLANG, mais est-il possible de définir à partir de mon plugin qui remplace la valeur par défaut?

Howard
la source
1
Le lien apparaît également dans la colonne de droite de cette page, mais je pense qu'il vaut la peine de noter dans les commentaires une autre approche pour une situation similaire: wordpress.stackexchange.com/a/53678/12615
brasofilo

Réponses:

16

En wp-includes/l10n.phpvous trouverez la fonction get_locale(). Il propose un filtre; vous pouvez définir la langue et ignorer 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 );
}

Pour le changer par plugin, utilisez le filtre 'locale'. Exemple:

add_filter( 'locale', 'wpse_52419_change_language' );
function wpse_52419_change_language( $locale )
{
    return 'de_DE';
}
fuxia
la source
Fonctionne comme une magie. Mais dans mon cas, il est de renvoyer une erreur: Fatal error: Cannot redeclare get_locale(). J'ai donc simplement changé le nom de la fonction get_locale()en nano_get_locale(), et cela fonctionne à merveille.
Mayeenul Islam
3
@MayeenulIslam Vous ne devez pas copier la get_locale()fonction, c'est une citation du noyau. Tout ce dont vous avez besoin est le dernier bloc de code.
fuxia
grand @toscho, merci beaucoup. Cependant, cela ne fonctionne pas si j'allume OPCache sur mon MAMPpro local ... est-ce que c'est ou y a-t-il une solution?
Raphael Jeger
@RaphaelJeger Cela ne peut pas être affecté par OPCache, seul un chache de sortie peut le faire. Si vous avez toujours ce problème, posez une nouvelle question.
fuxia