如何翻译WordPress模板名称?

问题描述 投票:0回答:3

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

WordPress 模板标题:

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

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

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

php wordpress internationalization wordpress-theming po
3个回答
15
投票

我最近偶然发现了这一点。这是我解决这个问题的方法:

首先,将

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 是如何工作的 - 如果你手动添加翻译,你可能不需要虚拟调用 - 只需测试有或没有它,然后使用最适合你的:)


6
投票

更好的方法:

  1. Text Domain: theme-slug
    标头添加到您的 style.css 文件中(如果您尚未这样做)。

  2. 通过查看develop.svn trunk来获取官方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工具时,需要在trunk checkout中。您无法在文件系统中移动它们,因为它们依赖于 WordPress 函数来执行一些文件解析,因此它们具有将树备份到 WordPress 核心 /src 目录的相对包含路径。 trunk 目录作为一个整体需要保持完整,工具才能正常工作。但是, trunk 目录可以取消配置,您不需要安装有效的 WordPress,它只需要一些 WordPress 代码即可正确解析文件。


0
投票

一个非常好的博客,可以添加有关保持健康身体的课程,如果您想了解更多信息,请访问我们的网站https://medium.com/@imunkita

© www.soinside.com 2019 - 2024. All rights reserved.