Ustawianie WPLANG z wtyczki

11

W przypadku Wordpress dla pojedynczej witryny, język musi być ustawiony na wp-config.php's' WPLANG, ale czy można ustawić z mojej wtyczki, która zastępuje wartość domyślną?

Howard
źródło
1
Link pojawia się również w prawej kolumnie tej strony, ale myślę, że warto zauważyć w komentarzach inne podejście do podobnej sytuacji: wordpress.stackexchange.com/a/53678/12615
brasofilo

Odpowiedzi:

16

W wp-includes/l10n.phpznajdziecie funkcję get_locale(). Oferuje filtr; możesz ustawić język i zignorować stałą:

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

Aby zmienić go według wtyczki, użyj filtra 'locale'. Przykład:

add_filter( 'locale', 'wpse_52419_change_language' );
function wpse_52419_change_language( $locale )
{
    return 'de_DE';
}
fuxia
źródło
Działa jak magia. Ale w moim przypadku, to zwrócenie błędu: Fatal error: Cannot redeclare get_locale(). Więc po prostu zmieniłem nazwę funkcji z get_locale()na nano_get_locale()i działa ona cudownie.
Mayeenul Islam,
3
@MayeenulIslam Należy nie kopiować get_locale()funkcję, to cytat z rdzenia. Wszystko czego potrzebujesz to ostatni blok kodu.
fuxia
wielkie @toscho, wielkie dzięki. Nie działa to jednak, jeśli włączę OPCache na moim lokalnym MAMPpro ... czy to tak, czy jest rozwiązanie?
Raphael Jeger,
@RaphaelJeger OPCache nie może mieć na to wpływu, może to zrobić tylko wyjściowa pamięć podręczna. Jeśli nadal masz ten problem, zadaj nowe pytanie.
fuxia