Đặt WPLANG từ plugin


11

Đối với một wordpress trang web duy nhất, ngôn ngữ phải được đặt từ wp-config.php's WPLANG, nhưng có thể đặt từ plugin của tôi ghi đè giá trị mặc định không?


1
Liên kết cũng xuất hiện ở cột bên phải của trang này, nhưng tôi nghĩ rằng đáng chú ý trong các bình luận một cách tiếp cận khác cho một tình huống tương tự: wordpress.stackexchange.com/a/53678/12615
brasofilo

Câu trả lời:


16

Trong wp-includes/l10n.phpbạn sẽ tìm thấy chức năng get_locale(). Nó cung cấp một bộ lọc; bạn có thể đặt ngôn ngữ và bỏ qua hằng số:

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

Để thay đổi nó trên mỗi plugin sử dụng bộ lọc 'locale'. Thí dụ:

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

Hoạt động như một phép thuật. Nhưng trong trường hợp của tôi, nó trả về một lỗi : Fatal error: Cannot redeclare get_locale(). Vì vậy, tôi chỉ cần thay đổi tên hàm từ get_locale()thành nano_get_locale(), và nó hoạt động tuyệt vời.
Mayeenul Hồi giáo

3
@MayeenulIslam Bạn không nên sao chép get_locale()chức năng, đó là một trích dẫn từ cốt lõi. Tất cả bạn cần là khối mã cuối cùng.
fuxia

@toscho tuyệt vời, cảm ơn nhiều. Tuy nhiên, điều này không hoạt động nếu tôi bật OPCache trên MAMPpro cục bộ của mình ... nó có giống như vậy hay có một giải pháp?
Raphael Jeger

@RaphaelJeger Điều này không thể bị ảnh hưởng bởi OPCache, chỉ có một bộ đệm đầu ra mới có thể làm điều đó. Nếu bạn vẫn gặp vấn đề này, hãy hỏi một câu hỏi mới.
fuxia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.