プラグインからWPLANGを設定する


11

単一サイトのWordPressの、言語から設定する必要がありますwp-config.phpWPLANGが、それはデフォルト値を上書き私のプラグインから設定することは可能ですか?


1
リンクも、このページの右側の列に表示されますが、私はそれの価値があるコメントで似たような状況のための別のアプローチに注目だと思う:wordpress.stackexchange.com/a/53678/12615
brasofilo

回答:


16

ではwp-includes/l10n.php、あなたの関数がありますget_locale()。フィルターを提供します。言語を設定して定数を無視できます:

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

プラグインごとに変更するには、フィルターを使用します'locale'。例:

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

魔法のように動作します。しかし、私の場合、エラーが返されますFatal error: Cannot redeclare get_locale()。したがって、関数名をからget_locale()に変更しただけで、うまく機能しnano_get_locale()ています。
Mayeenul Islam 2013

3
@MayeenulIslam 関数をコピーしないでくださいget_locale()。これはコアからの引用です。必要なのは、最後のコードブロックだけです。
fuxia

素晴らしい@toscho、ありがとう。ただし、ローカルMAMPproでOPCacheをオンにすると、これは機能しません...それはそのようなものですか、それとも解決策がありますか?
Raphael Jeger、2015

@RaphaelJegerこれはOPCacheの影響を受けることはありません。これを実行できるのは出力チェッシュだけです。それでもこの問題が発生する場合は、新しい質問をしてください。
fuxia
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.