有没有本地化角色标签的方法?

时间:2013-03-27 作者:annabwashere

我正在使用JustinTadlock的Members插件创建新角色,并在注册时使用WP Role在注册表中显示它们。

我有一个多语言网站(英语和西班牙语),并且我使用qTranslate本地化了我的自定义分类法。

我无法在成员插件的角色标签字段中使用qTranslate的quicktags,因为它无法正确保存它(即使使用$new_role_label = strip_tags( $_POST[\'role-label\'] ); 对新角色发表了评论。php),我无法进入数据库进行更改,因为这样它就会崩溃。

我看到关于WP function translate_user_role 但我不确定。没有太多其他的事情要做。

1 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

我也不知道你提到的功能,但我大胆猜测,这只适用于默认角色。

不过,您发布的链接确实包含一个指向正确方向的指针。它谈到了“虚拟gettext调用”,这正是您必须要做的。

在下文中,我们将调整全球$wp_roles 对象打开init 并将过滤器挂到get_option( \'wp_user_roles\' ) 呼叫

function wpse92529_translatable_role_names() {
    global $wp_roles;

    $roles = $wp_roles->roles;
    $role_names = $wp_roles->role_names;

    /* define the translatable roles here */
    $translated_roles = array(
        \'superuser\' => _x( \'Superuser\', \'Role Names\', \'your-text-domain\' ),
        \'custom-role\' => _x( \'The custom role\', \'Role Names\', \'your-text-domain\' )
    );

    foreach ( $roles as $role_slug => $role_info ) {
        if ( array_key_exists( $role_slug, $translated_roles ) ) {
            $roles[$role_slug][\'name\'] = $translated_roles[$role_slug];
            $role_names[$role_slug] = $translated_roles[$role_slug];
        }
    }

    $wp_roles->roles = $roles;
    $wp_roles->role_names = $role_names;

    return $roles;
}

add_action( \'init\', \'wpse92529_translatable_role_names\', 1 );
add_filter( \'option_wp_user_roles\', \'wpse92529_translatable_role_names\', 11 );
的值$translated_roles 数组现在将出现在主题/插件中.pot 文件

结束

相关推荐

multi-language WordPress site

我正在制作由WordPress支持的多语言网站。WPML 不是免费的,而且它对数据库进行了太多额外的sql查询,所以对于我的站点来说,这不是一个好的解决方案。qTranslate 将所有语言保存在一个数据库行中,以后移动到另一个多语言插件非常复杂。<?php _e( \'<!--:en-->english text<!--:--><!--:de-->german text<!--:-->\' ); ?> xLanguage 两年多没有更新