2

我想将 WordPress 主题设置为英语以外的语言,但我想保持 WordPress 的控制面板为英语。我该如何做到这一点?

更改wp-config.php将无济于事,因为它也会更改控制面板的语言define('WPLANG', '');

我对插件不感兴趣,我只需要设置主题的语言,而不是控制面板。

谢谢。

4

2 回答 2

2

这是一个示例,前端将是荷兰语,后端默认为英语:

if ( strpos( $_SERVER['REQUEST_URI'], 'wp-admin' ) === false ) :
    define( 'WPLANG', 'nl_NL' );
else :
    define( 'WPLANG', '' );
endif;

更新

WordPress 4.0 弃用了WPLANG常量(链接)。站点语言是从管理面板设置的:Settings -> General -> Site Language

开发人员现在可以通过定义$locale全局 in来修改语言环境wp-config.php,...

if( strpos( $_SERVER['REQUEST_URI'], 'wp-admin' ) === false ) :
    $locale = 'nl_NL';
else :
    $locale = 'en_US';
endif;

...或使用locale过滤器:

add_filter( 'locale', 'so16425245_filter_locale', 0, 1 );
function so16425245_filter_locale( $locale )
{
    if( strpos( $_SERVER['REQUEST_URI'], '/wp-admin/' ) !== false )
        return 'en_US';

    return 'nl_NL';
}

另请参阅 Greeso 关于管理员 AJAX 的回答。

于 2013-05-07T17:43:22.763 回答
0

“diggy”的答案很棒,而且大部分时间都有效。但是,它在一种情况下不起作用:

如果您在 WordPress 中使用 AJAX,那么即使您在站点根目录下$_SERVER['REQUEST_URI']也会包含(例如,如果您访问 www.your-site.com,那么如果您在该根页面中使用 AJAX,则会返回)。wp-admin/admin-ajax.php$_SERVER['REQUEST_URI']wp-admin/admin-ajax.php

因此,要解决此问题,您应该将条件检查修改为如下:

if ( ( strpos( $_SERVER['REQUEST_URI'], 'wp-admin' ) === false ) || (strpos( $_SERVER['REQUEST_URI'], 'wp-admin/admin-ajax.php' ) !== false) ) :
    define( 'WPLANG', 'nl_NL' );
else :
    define( 'WPLANG', '' );
endif;

更新

对于 4.0 及更高版本,请使用以下内容

if ( ( strpos( $_SERVER['REQUEST_URI'], 'wp-admin' ) === false ) || (strpos( $_SERVER['REQUEST_URI'], 'wp-admin/admin-ajax.php' ) !== false) ) :
    $locale = 'nl_NL';
else :
    $locale = 'en_US';
endif;
于 2014-03-01T07:48:36.353 回答