如何使用 poedit 解析 Timber (twig) 模板并检测引用的字符串以进行翻译
Posted
技术标签:
【中文标题】如何使用 poedit 解析 Timber (twig) 模板并检测引用的字符串以进行翻译【英文标题】:How to parse Timber (twig) templates with poedit and detect quoted strings to translate 【发布时间】:2016-12-04 13:48:24 【问题描述】:我想用 poedit 解析 Timber 的树枝模板,我需要翻译引用的内容。问题是我找不到不跳过引用内容的解析器。
例子:
<htmltag attribute=" __('value','textdomain') " />
有人知道用于检测引用内容(如 html 属性内容)的 poedit 解析器吗?
【问题讨论】:
另见***.com/questions/34243278/…和***.com/questions/33910482/… 【参考方案1】:我找到的解决方法是设置一个变量并将其用作我的属性值。
% set attr_value = __('value', 'textdomain') %
<a href=' attr_value '>link</a>
按照Timber documentation 中的建议,php 和 Python 解析器可以这样工作。
使用 Twig-Gettext-Extractor,由于无法识别 __() 函数,我得到了 Twig-Error-Syntax。
【讨论】:
好消息,Poedit 2 is here。使用付费 PRO 版本,您可以获得对 Twig 的全面支持,并且 HTML 属性内的翻译也可以工作。【参考方案2】:使用 Poedit 时不会自动识别 Twig 文件。要解决这个问题,Timber’s documentation offers three options:
每个.twig
文件都以#<?php#
开头
或使用The Twig Gettext Extractor,这是一个«poedit 友好的工具,可以从树枝模板中提取翻译»。
或者使用 Python 解析器。请参阅documentation,了解如何在 Poedit 中进行设置。
我选择了选项 3,效果很好。
【讨论】:
您是否尝试过问题中提供的示例?对我来说,它不起作用。 刚试过。没错,您的用例不适用于 Python 解析器。原因如下:***.com/a/34249157/1059980。我想我们必须等待 Poedit 2,其中模板语言似乎得到更好的支持,在那之前,使用您提出的解决方案。 感谢@Gchtr 的尝试和关于 poedit 2 的提示!【参考方案3】:在 OSX Sierra 上遇到同样的问题,三种解决方案都不适合我:
在我的 .twig 文件上使用#<?php#
导致 poedit 无法识别我的字符串
使用 Twig-Gettext-Extractor 会引发很多错误
使用 python 编译也会抛出很多错误
我使用第一个选项(#<?php#
在我的 .twig 文件之上)解决了问题,但我还编辑了 PoEdit PHP 提取器,以便它也可以在 .twig 文件中搜索。
我希望这可以帮助,
干杯!
【讨论】:
真的是属性翻译的问题吗?以上是关于如何使用 poedit 解析 Timber (twig) 模板并检测引用的字符串以进行翻译的主要内容,如果未能解决你的问题,请参考以下文章