如何翻译WordPress模板名称?

jam*_*lin 12 php wordpress wordpress-theming internationalization po

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

WordPress模板标题:

/**
 * Template Name: Three columns
 *
 * @package WordPress
 */
Run Code Online (Sandbox Code Playgroud)

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

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

Nik*_*lov 13

我最近偶然发现了这一点.以下是我如何解决这个问题:

首先,添加(如果您已经没有)Text Domain: mytext_domain到您的主题,实际文本域style.css在哪里mytext_domain.

然后在主题的某个地方添加一个虚拟调用到翻译函数(最好是在模板名称声明下添加它,所以你不知道为什么要放它):

/**
 * Template Name: Three columns
 *
 * @package WordPress
 */
__( 'Three columns', 'mytext_domain' );
Run Code Online (Sandbox Code Playgroud)

这样做的原因是因为WordPress将您的模板名称传递给translate()函数,但由于转换器插件解析您的代码,因此他们不知道您的模板名称应该是.po(或者是.mo?)文件的一部分.__()修复问题的虚拟调用.

Text Domain为style.css 添加声明的原因是因为这是WordPress在解析模板名称时查找主题的textdomain的地方.

我无法给你确切的消息来源,因为我真的只是探索核心代码,直到我弄清楚它是如何工作的,以及如何能够翻译我的模板名称.

PP:我不确定Poedit是如何工作的 - 如果你手工添加你的翻译,你可能不需要虚拟调用 - 只需测试有没有它并使用最适合你的:)


Ott*_*tto 5

更好的方法:

  1. Text Domain: theme-slug如果您还没有将标题添加到style.css文件中.

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

  3. 在那里,你会找到一个名为/ 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代码来正确解析文件.