翻译 WordPress 网站中未包含在 .po 文件中的主题文本

Translate theme texts in WordPress site not contained in .po file

我正在尝试向 Wordpress 站点添加另一种语言。一些翻译由一个名为 Polylang 的插件处理,但我也使用 .po/.mo 文件来处理 Polylang 无法访问的一些文本。

但是,即使在随主题提供的 .po 文件中,也有一些文本没有显示。

举个例子。

主题选项中有一个设置可以设置与某些链接相关联的文本(标题和描述)。主题模板中的php是这样的:

<div id="homeheadlinks" class="col-md-4">
        <a href="<?php echo $options['unf_firstlink']?>" class="headbutton bone"><i class="golink"></i><?php echo $options['unf_firstlinktitle']?> <em><?php echo $options['unf_firstlinkdesc']?></em></a>
        <a href="<?php echo $options['unf_secondlink']?>" class="headbutton btwo"><i class="golink"></i><?php echo $options['unf_secondlinktitle']?> <em><?php echo $options['unf_secondlinkdesc']?></em></a>
        <a href="<?php echo $options['unf_thirdlink']?>" class="headbutton bthree"><i class="golink"></i><?php echo $options['unf_thirdlinktitle']?> <em><?php echo $options['unf_thirdlinkdesc']?></em></a>
    </div>

可以通过主题选项更改文本,但是除了主要语言之外,无法添加其他语言。

如何为 $options['unf_firstlinktitle']$options['unf_firstlinkdesc'] 等项目添加翻译。

需要说明的是,这些项目不会出现在 Polylang 的字符串翻译部分。

由于您的代码与主题中的某些设置相关联,因此您可以在 php 主题模板中使用 gettex native translatable function 直接覆盖它们。在下面的代码中,您需要将 'the title …' 替换为您的真实标题,将 'your_theme_slug' 替换为您的真实主题 slug):

    <div id="homeheadlinks" class="col-md-4">
        <a href="<?php echo $options['unf_firstlink']?>" class="headbutton bone"><i class="golink"></i><?php _e('the title …', 'your_theme_slug'); ?> <em><?php echo $options['unf_firstlinkdesc']?></em></a>
        <a href="<?php echo $options['unf_secondlink']?>" class="headbutton btwo"><i class="golink"></i><?php _e('the title …', 'your_theme_slug'); ?> <em><?php echo $options['unf_secondlinkdesc']?></em></a>
        <a href="<?php echo $options['unf_thirdlink']?>" class="headbutton bthree"><i class="golink"></i><?php _e('the title …', 'your_theme_slug'); ?> <em><?php echo $options['unf_thirdlinkdesc']?></em></a>
    </div>

然后您将需要使用 Polylang 重新扫描此模板以获取新字符串,您将发现 3 个新的可翻译字符串。这是解决您的问题的最快方法。但是,如果还没有完成,启用 child 主题会更好,将这个更改的文件复制到其中,避免这种方式在主题更新时丢失更改…

参考:I18n for WordPress Developers (gettex)

所以,这就是我所做的,它似乎奏效了。我决定添加类似于 LoicTheAztec 建议的内容。

在每个链接中,我都将它们更改为

<a href="<?php pll_e('http://mydomainname.com/englishpage/', 'mytheme-child') ?>" class="headbutton bone"><i class="golink"></i><?php pll_e('Link text', 'mytheme-child') ?> <em><?php pll_e ('Link description', 'mytheme-child') ?></em></a>https://wordpress.org/plugins/polylang-theme-strings/

然后我安装了插件 Polylang Theme Strings,它将我使用 pll_e() 创建的所有新字符串放入 Polylang 的字符串翻译选项卡中。从那里我做了翻译(在顶部菜单栏中选择显示所有语言后。)

几乎 完美。我还有一个问题,如果我不能很快自己解决,我会 post 解决这个问题。