Pengaturan WPLANG dari sebuah plugin


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.