如何将I18N添加到插件的Twig模板文件中?

时间:2016-01-22 作者:Sam Wilson

A plugin 我维护使用细枝模板来生成HTML(和一些其他输出)。我试过使用__() 在这些函数中(首先添加i18n函数$twig->addFunction()) 但它不起作用。字符串被正确输出,但未被提取以包含在.pot 文件

对于example 中的以下内容base.twig 应可翻译:

{{__(\'Search\', \'tabulate\')}}
我显然走错了方向。有人有什么建议吗?

2 个回复
SO网友:Wes Moberly

以下是Timber插件如何处理此问题:

$twig->addFunction( \'__\', new Twig_SimpleFunction( \'__\', function ( $text, $domain = \'default\' ) {
    return __( $text, $domain );
} ) );
我猜您正在做类似的事情,在这种情况下,跳过这些内容的原因是您正在为文本域使用一个变量。您是否尝试过对文本域进行编码?

$twig->addFunction( \'__\', new Twig_SimpleFunction( \'__\', function ( $text ) {
    return __( $text, \'your-text-domain\' );
} ) );
如果这不是一个选项或它不起作用,那么您需要用PHP处理所有翻译,并按照其他评论员的建议将翻译后的文本传递给您的细枝模板。

SO网友:Gchtr

我也有同样的问题。使用Poedit处理翻译时,不会自动识别细枝文件。关于的部分Generating .po files using Poedit 在Timber的国际化指南中,可能会帮助您进行设置以使其正常工作。

这个Twig Gettext Extractor 上面提到的对我来说效果不太好。一定要尝试Python解析器,它也是上面链接中描述的一种替代方法。

相关推荐

Plugin Localization

我刚刚为wp构建了我的第一个插件,即使它不是一个伟大的“代码诗意”;)它正常工作。这是一个使用GalleryView 3.0 jquery插件转换默认wp库的插件(http://spaceforaname.com/galleryview).我唯一不能做的就是本地化。此插件的本地化意味着转换管理界面,在这里可以配置jquery插件选项来更改结果库的外观。我试着关注网络上数百万的教程,在论坛上阅读了很多关于这个问题的帖子,并遵循了codex的指南。。。但仍然没有运气。这就是我所做的:每个文本行都位于gette