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

时间:2016-07-24 01:11:50

标签: php wordpress wordpress-theming translation gettext

我正在尝试将另一种语言添加到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的字符串翻译部分。

2 个答案:

答案 0 :(得分:3)

由于您的代码与主题中的某些设置相关联,因此您可以使用php主题模板中的gettex native translatable function直接覆盖它们。您需要在下面的代码中用您的真实标题替换 'the title …' ,并用您的真实主题slug替换 'your_theme_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个新的可翻译字符串。这是解决问题的最快方法。但是,如果还没有完成,那么启用子主题,将这个已更改的文件复制到其中会更好,避免这种方式在主题更新时失去更改...

参考:I18n for WordPress Developers (gettex)

答案 1 :(得分:0)

所以,这就是我所做的,它似乎有效。我决定添加类似于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的字符串翻译选项卡中。从那里我做了翻译(在顶部菜单栏中选择显示所有语言后。)

它完全可以 。我还有另外一个问题,如果我不能尽快解决这个问题,我会发布这个问题。