如何使用 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 文件都以#&lt;?php# 开头 或使用The Twig Gettext Extractor,这是一个«poedit 友好的工具,可以从树枝模板中提取翻译»。 或者使用 Python 解析器。请参阅documentation,了解如何在 Poedit 中进行设置。

我选择了选项 3,效果很好。

【讨论】:

您是否尝试过问题中提供的示例?对我来说,它不起作用。 刚试过。没错,您的用例不适用于 Python 解析器。原因如下:***.com/a/34249157/1059980。我想我们必须等待 Poedit 2,其中模板语言似乎得到更好的支持,在那之前,使用您提出的解决方案。 感谢@Gchtr 的尝试和关于 poedit 2 的提示!【参考方案3】:

在 OSX Sierra 上遇到同样的问题,三种解决方案都不适合我:

在我的 .twig 文件上使用 #&lt;?php# 导致 poedit 无法识别我的字符串 使用 Twig-Gettext-Extractor 会引发很多错误 使用 python 编译也会抛出很多错误

我使用第一个选项(#&lt;?php# 在我的 .twig 文件之上)解决了问题,但我还编辑了 PoEdit PHP 提取器,以便它也可以在 .twig 文件中搜索。 我希望这可以帮助,

干杯!

【讨论】:

真的是属性翻译的问题吗?

以上是关于如何使用 poedit 解析 Timber (twig) 模板并检测引用的字符串以进行翻译的主要内容,如果未能解决你的问题,请参考以下文章

PHP:如何在 Poedit 中使用换行符

如何使用 poedit 从 js 文件生成 po 文件

如何使用 POEdit 从特定域获取(可翻译的)字符串

如何在poedit中编辑原始字符串列?

如何找到 POEdit 错误

如何让 poedit 工作?