Pengaturan WPLANG dari sebuah plugin

11

Untuk situs wordpress tunggal, bahasa harus diatur dari wp-config.php's WPLANG, tapi apakah mungkin untuk set dari plugin saya yang menimpa nilai default?

Howard
sumber
1
Tautan ini juga muncul di kolom kanan halaman ini, tetapi saya pikir perlu dicatat di komentar pendekatan lain untuk situasi yang sama: wordpress.stackexchange.com/a/53678/12615
brasofilo

Jawaban:

16

Di dalam wp-includes/l10n.phpAnda akan menemukan fungsi get_locale(). Ini menawarkan filter; Anda dapat mengatur bahasa dan mengabaikan konstanta:

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

Untuk mengubahnya per plugin gunakan filter 'locale'. Contoh:

add_filter( 'locale', 'wpse_52419_change_language' );
function wpse_52419_change_language( $locale )
{
    return 'de_DE';
}
fuxia
sumber
Bekerja seperti sihir. Tapi dalam kasus saya, itu kembali kesalahan: Fatal error: Cannot redeclare get_locale(). Jadi saya hanya mengubah nama fungsi dari get_locale()menjadi nano_get_locale(), dan itu berfungsi dengan sangat baik.
Mayeenul Islam
3
@MayeenulIslam Anda tidak boleh menyalin get_locale()fungsi, itu kutipan dari inti. Yang Anda butuhkan adalah blok kode terakhir.
fuxia
@toscho hebat, terima kasih banyak. Namun, ini tidak berfungsi jika saya mengaktifkan OPCache di MAMPpro lokal saya ... apakah itu seperti itu atau ada solusi?
Raphael Jeger
@ RaphaelJeger Ini tidak dapat dipengaruhi oleh OPCache, hanya output chache yang bisa melakukannya. Jika Anda masih memiliki masalah ini, ajukan pertanyaan baru.
fuxia