【问题标题】:How to translate a WordPress template name?如何翻译 WordPress 模板名称?
【发布时间】:2012-11-13 17:26:39
【问题描述】:

我知道如何为主题和模板创建翻译,例如使用 Poedit 生成 .po 和 .mo 文件。但是由于模板名称是在每个模板文件顶部的 PHP cmets 中编写的,因此我无法翻译它。

WordPress 模板标题:

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

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

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

【问题讨论】:

    标签: php wordpress internationalization wordpress-theming po


    【解决方案1】:

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

    首先,将Text Domain: mytext_domain 添加(如果您还没有)style.css,其中mytext_domain 是您主题的实际文本域。

    然后在你的主题的某处添加一个对翻译函数的虚拟调用(最好将它添加到模板名称声明下,这样你就不会想知道为什么要放置它):

    /**
     * Template Name: Three columns
     *
     * @package WordPress
     */
    __( 'Three columns', 'mytext_domain' );
    

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

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

    我不能给你确切的来源,因为我真的只是在核心代码周围摸索,直到我弄清楚它是如何工作的以及如何能够翻译我的模板名称。

    PP:我不确定 Poedit 是如何工作的 - 如果您手动添加翻译,您可能不需要虚拟调用 - 只需在有和没有它的情况下进行测试,然后使用最适合您的 :)

    【讨论】:

    • 太棒了!那成功了。 :) 奇怪的是几乎没有这方面的文档。为其他人澄清:您需要在 style.css 中的主题定义 cmets 中添加 Text Domain: mytext_domain
    • 是的,几乎没有任何文档记录。我从this ticket 开始,然后浏览了核心文件,直到我了解它是如何工作的:)
    【解决方案2】:

    更好的方法:

    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 目录的相对包含路径。整个主干目录需要完好无损,工具才能正常工作。但是,主干目录可以取消配置,您不需要安装 WordPress,它只需要一些 WordPress 代码来正确解析文件。

    【讨论】:

      猜你喜欢
      • 2013-08-24
      • 2012-07-20
      • 2015-04-27
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多