php - 如何翻译WordPress模板名称?

标签 php wordpress internationalization wordpress-theming po

我知道如何创建主题和模板的翻译,例如使用 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 是如何工作的 - 如果您手动添加翻译,您可能不需要虚拟调用 - 只需测试有或没有它,然后使用最适合您的那个:)

关于php - 如何翻译WordPress模板名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13561410/

相关文章:

javascript - Vue.js - 具有两个行跨度的组件

php - 更改 mysql 数据库以查询 mysqli db?

php - WordPress 作为数据库的 HTML 界面

javascript - 在三重嵌套的 UL 元素上添加切换

javascript - 从浏览器访问 Unity Webgl 输出,反之亦然

javascript - 使用 JavaScript 动态变量进行字符串国际化

internationalization - 如何以 i18n 友好的方式缩写大数?

javascript - 如何在 Javascript 和 PHP 中使用 XMLHttpRequest 将 HTML 内容发送到 MSSQL 数据库字段?

php - 迁移后 CodeIgniter 空白屏幕

unicode - i18n/Markdown - Markdown 是否支持国际化?