플러그인에서 WPLANG 설정


11

단일 사이트 워드 프레스의 경우, 언어에서 설정해야합니다 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

3
@MayeenulIslam 함수를 복사 해서는 안됩니다get_locale() . 코어에서 인용 한 것입니다. 마지막 코드 블록 만 있으면됩니다.
fuxia

좋은 @ toscho, 많은 감사합니다. 그러나 로컬 MAMPpro에서 OPCache를 켜면 작동하지 않습니다 ... 그렇거나 해결책이 있습니까?
Raphael Jeger

@RaphaelJeger 이것은 OPCache의 영향을받지 않으며, 출력 chache 만 가능합니다. 여전히이 문제가 발생하면 새로운 질문을하십시오.
fuxia
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.