当我偶然发现在pre_get_document_title
功能:(简化)
$title = \'Hello World\';
__( $title, \'my_text_domain\' );
这将返回正确的翻译字符串。然而,最近有人向我指出,这不是有效的语法,因为本地化函数应该只接收字符串;不是变量,也不是函数返回值。推荐的(正确的)语法,如许多主题所示:
sprintf( __( \'%s\', \'my_text_domain\' ), $title );
做了这个改变后,我发现我所有的标题现在都是英文的。i、 e.什么都不能翻译。所有的语言文件都还在,我所做的只是修改了\\uuu()调用。
我错过了什么吗?
SO网友:Mike
调用函数的顺序错误。
使用此代码:
sprintf( __( \'%s\', \'my_text_domain\' ), $title );
您正在尝试翻译域“my\\u text\\u domain”中的字符串\'\'%1!\'\'然后用变量的内容替换\'\'%1!\'\'的已翻译字符串(即\'\'%2!\'\')
$title
.因此,您的代码类似于
sprintf( \'%s\', $title);
您应该做什么:
__( sprintf( \'%s\', $title ), \'my_text_domain\' );