通过插件设置WPLANG


Answers:


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,这将不起作用...是这样还是存在解决方案?
拉斐尔·杰格

@RaphaelJeger这不受OPCache的影响,只有输出队列可以执行此操作。如果仍然有此问题,请提出一个新问题。
fuxia
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.