在主题中找到合适的“文本域”

时间:2013-06-27 作者:parker.sikand

我有一个wordpress主题的客户,Nevada, 而且我们很难让内置的翻译为它工作。主题包含。英语、德语和斯洛文尼亚语的mo文件,似乎可以通过我们的WPML插件找到。但是,他们没有翻译主题内的任何模板文本。我们创建的内容的翻译工作正常。

遵循此处的说明:http://wpml.org/documentation/getting-started-guide/theme-localization/ , 查看“部分”;选项2:使用。主题本地化的mo文件“;,听起来我只需要输入textdomain 对于主题。

问题是,我不知道它是什么,也不知道如何找到它。我试图挖掘主题文件本身,但任何文本输出都被抽象到许多层函数后面。更糟糕的是,我和我的客户都没有主题提供商的支持帐户(但我们有有效的许可证!)他们一点帮助都没有。

如何找到文本域以使WPML与此主题一起工作?

Update

当我打开其中一个。po文件我看到的行如下:

#: template-part-teaser.php:41
#@ Nevada
msgid "404 Error"
msgstr "404 Error"
所以我试着进入;内华达州“;作为WPML插件中的textdomain,但这对我来说没有任何改变

2 个回复
SO网友:vancoder

在代码中,您能看到如下语法之一吗?

__( \'Hello, dear user!\', \'my-text-domain\' )

_e( \'Your Ad here\', \'my-text-domain\' )
也就是说,字符串以\\uuuu(双下划线)或\\u e开头。如果是这样,如果上面说的是我的文本域,您应该找到您的文本域的名称。

SO网友:parker.sikand

在大多数情况下,@vancoder的回答是绝对正确的。我的情况似乎相当独特,但我想分享我的经验,这样可以帮助其他人。

对于此Nevada主题,模板文件中不使用标准函数。显然,Nevada使用Lambda框架(对我来说完全陌生),因此任何文本输出都是通过Lambda\\u translate函数调用进行的。在不断挖掘之后,我放弃了将这些函数追溯到__()_e() 呼叫

相反,为了找到文本域,我戴上Linux帽子,在Nevada主题文件夹中输入此命令。

grep -r "load_theme_textdomain" .
果然,在函数中。php文件中,load\\u theme\\u textdomain函数与文本域一起存在。

结束