我知道如何通过使用Poedit生成.po和.mo文件来创建主题和模板的翻译。但是,由于模板名称是在每个模板文件顶部的PHP注释中编写的,因此无法按照我的看法进行翻译。
WordPress模板标题:
/**
* Template Name: Three columns
*
* @package WordPress
*/
模板名称以某种方式由Wordpress解析,用于在创建页面时填充模板选择下拉列表。
所以我的问题是:有没有办法翻译WordPress模板名称? WordPress还会查找我可以在模板文件中设置的任何特定变量吗?还是只是不可能?
答案 0 :(得分:13)
我最近偶然发现了这一点。以下是我如何解决这个问题:
首先,在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在解析模板名称时查找主题的textdomain的地方。
我无法给你确切的消息来源,因为我真的只是探索核心代码,直到我弄清楚它是如何工作的,以及如何能够翻译我的模板名称。
PP:我不确定Poedit是如何工作的 - 如果你手动添加你的翻译,你可能不需要虚拟电话 - 只要测试是否使用它并使用最适合你的方式:)答案 1 :(得分:5)
更好的方法:
将Text Domain: theme-slug
标题添加到style.css文件中(如果尚未添加)。
通过查看develop.svn主干来结帐官方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工具时,他们需要在行李箱结账时使用。你不能在文件系统中移动它们,因为它们依赖于WordPress函数来对文件进行一些解析,所以它们有相对的包含路径将树备份到WordPress核心/ src目录中。作为整体的主干目录需要完整,以使工具正常工作。但是,trunk目录可以取消配置,你不需要有WordPress的工作安装,只需要一些WordPress代码就可以正确解析文件。