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?


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';
}

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.