_x()和_ex()也是WordPress国际化常用的函数,他们有什么区别呢?

_x()的源码:

1
2
3
function _x( $text, $context, $domain = 'default' ) {
    return translate_with_gettext_context( $text, $context, $domain );
}

_ex()的源码:

1
2
3
function _ex( $text, $context, $domain = 'default' ) {
    echo _x( $text, $context, $domain );
}

很清楚了,他俩之间的区别和__()、_e()是一样的。

我们也可以小小总结一下,没有 e 就返回字符串,有 e 就 输出字符串。

现在还有个问题:_x() 和 __()又有什么区别呢?

再把__()的源码找出来:

1
2
3
function __( $text, $domain = 'default' ) {
    return translate( $text, $domain );
}

_x()多了一个参数 context。context就是上下文的意思。

清楚了,_x()可以根据上下文选择更合适的翻译。

例如在WordPress中文章使用的是单词post,发布文章用的也是post。

1
2
3
4
5
 _ex('post', 'A post.');
//一篇文章
 
 _ex('post', 'To post.');
//发布文章

此处仅为说明,诸如几个单词的短语短句,直接在语言包中设置两个翻译项就可以了。因此,_x()和_ex()仅适用于多处大段文字的情况。

版权声明:部分文章、图片等内容为用户发布或互联网整理而来,仅供学习参考。如有侵犯您的版权,请联系我们,将立刻删除。