Wordpress poedit不';我不认识你

Wordpress poedit不';我不认识你,wordpress,translation,poedit,Wordpress,Translation,Poedit,My.po文件包含: "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;" "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n" 我的php/wordp

My.po文件包含:

"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;"
"esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
我的php/wordpress代码包含:

"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;"
"esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
\u x('addnew',$this->post\u type,$domain),
我知道Poedit正在扫描该文件(所有其他可翻译字符串都在“更新目录”中拾取,并共享同一个域)。如果我将x改为x(并删除上下文参数),它也会选择该参数。但正如所写的,“addnew”字符串根本不会显示在PoEdit中

即使我手动将字符串添加到po文件中,在尝试从源更新到.po文件后,它也会将其放入“过时字符串”中

本以为“x:1,2c;”位足以拾取字符串,但它永远不会


是我做错了什么,还是我遇到了一个实际的错误?

请参阅位于的
\u x()
的文档-第二个参数是上下文,它是PO中包含的一个字符串以及源文本,用于消除具有不同含义的相同字符串的歧义。上面的codex页面有一个示例;另一个是“打开”,可以在不同的上下文中使用,因此程序员会使用“文件菜单”作为上下文

重要的一点是,它的处理方式与要翻译的文本相同。要提取文本,文本必须是
xgettext
的字符串文字,上下文也必须是字符串文字(必须是:它是进入PO文件的内容!)

$this->post_type
不是文本,这就是为什么
xgettext
无法识别它的原因。它无法知道在运行时post_类型值可能是什么,因此它不可能知道在创建的PO文件中写入什么

要解决此问题,您需要将
\u x()
与至少前两个参数字符串文本一起使用