我知道如何创建主题和模板的翻译,例如使用 Poedit 生成 .po 和 .mo 文件。但由于模板名称是用 PHP 注释写在每个模板文件顶部的,因此无法按照我的理解进行翻译。
WordPress 模板标题:
/**
* Template Name: Three columns
*
* @package WordPress
*/
模板名称以某种方式由 Wordpress 进行解析,并用于在创建页面时填充模板选择下拉列表。
所以我的问题是:有没有办法翻译 WordPress 模板名称? WordPress 是否还会查找我可以在模板文件中设置的任何特定变量?还是根本不可能?
最佳答案
我最近偶然发现了这一点。这是我解决这个问题的方法:
首先,添加(如果您还没有)Text Domain: mytext_domain
到您的 style.css
,其中 mytext_domain
是您主题的实际文本域。
然后在主题中的某个位置添加对翻译函数的虚拟调用(最好的办法是将其添加到模板名称声明下方,这样您就不会想知道为什么要放置它):
/**
* Template Name: Three columns
*
* @package WordPress
*/
__( 'Three columns', 'mytext_domain' );
这样做的原因是 WordPress 将您的模板名称传递给 translate()
函数,但由于翻译插件会解析您的代码,因此它们不知道您的模板名称应该是.po(或者是.mo?)文件。对 __()
的虚拟调用修复了该问题。
之所以在 style.css 中添加 Text Domain
声明,是因为 WordPress 在解析模板名称时会在此处查找主题的文本域。
我无法给你确切的来源,因为我实际上只是研究了核心代码,直到我弄清楚它是如何工作的以及如何能够翻译我的模板名称。
PP:我不确定 Poedit 是如何工作的 - 如果您手动添加翻译,您可能不需要虚拟调用 - 只需测试有或没有它,然后使用最适合您的那个:)
关于php - 如何翻译WordPress模板名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13561410/