我知道如何创建主题和模板的翻译,例如使用 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 是如何工作的 - 如果你手动添加翻译,你可能不需要虚拟调用 - 只需测试有或没有它,然后使用最适合你的:)
更好的方法:
将
Text Domain: theme-slug
标头添加到您的 style.css 文件中(如果您尚未这样做)。通过查看develop.svn trunk来获取官方WordPress开发人员包:http://develop.svn.wordpress.org/trunk/
在那里,您会找到一个名为 /tools/i18n 的目录。该目录中有一个
makepot.php
文件。您可以将其用于主题,如下所示:> php makepot.php wp-theme /path/to/your/theme/directory theme-slug.pot
这将使用最新的 WordPress 代码为您创建 POT 文件。它从标头、所有 WordPress i18n 函数以及所有内容中获取字符串。这也意味着您不需要像其他答案所建议的那样创建任何“假”字符串。
确保你也时不时地做一次
svn update
,因为 i18n 工具和核心主干代码可以时不时地更新以适应新事物。
注意,使用i18n工具时,需要在trunk checkout中。您无法在文件系统中移动它们,因为它们依赖于 WordPress 函数来执行一些文件解析,因此它们具有将树备份到 WordPress 核心 /src 目录的相对包含路径。 trunk 目录作为一个整体需要保持完整,工具才能正常工作。但是, trunk 目录可以取消配置,您不需要安装有效的 WordPress,它只需要一些 WordPress 代码即可正确解析文件。
一个非常好的博客,可以添加有关保持健康身体的课程,如果您想了解更多信息,请访问我们的网站https://medium.com/@imunkita