如何翻译WordPress模板名称?

时间:2012-11-26 08:52:55

标签: php wordpress internationalization wordpress-theming po

我知道如何通过使用Poedit生成.po和.mo文件来创建主题和模板的翻译。但是,由于模板名称是在每个模板文件顶部的PHP注释中编写的,因此无法按照我的看法进行翻译。

WordPress模板标题:

/**
 * Template Name: Three columns
 *
 * @package WordPress
 */

模板名称以某种方式由Wordpress解析,用于在创建页面时填充模板选择下拉列表。

所以我的问题是:有没有办法翻译WordPress模板名称? WordPress还会查找我可以在模板文件中设置的任何特定变量吗?还是只是不可能?

2 个答案:

答案 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)

更好的方法:

  1. Text Domain: theme-slug标题添加到style.css文件中(如果尚未添加)。

  2. 通过查看develop.svn主干来结帐官方WordPress开发人员包:http://develop.svn.wordpress.org/trunk/

  3. 在那里,你会找到一个名为/ tools / i18n的目录。在该目录中是makepot.php文件。您可以将其用于主题,如下所示:

  4. > 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代码就可以正确解析文件。