这个问题困扰了我一段时间,但我想一劳永逸地解决这个问题。
我在PHP应用程序中使用twig template engine。我使用最新版本的Poedit(使用xgettext 0.18.1)来解析我的文件以获取翻译字符串。
我已经设置Poedit使用这些instructions来处理树枝。
一切运作良好,但问题是当我更新我的Poedit目录时,我会收到这样的错误:
1:24:45 PM: somefile.twig:5: warning: unterminated string
1:24:45 PM: somefile.twig:10: warning: unterminated string
这是对话框:
这是有问题的文件:
{% extends somevar ? 'one.twig' : 'two.twig' %}
{% block blah %}
Blah blah
{% endblock %}
{% block blah2%}
<div id="some-id" class="some-class">
some content
</div>
{% endblock %}
但是,如果我在错误对话框中单击OK
,一切似乎都很好,然后将twig模板中的字符串加载到目录中。
我知道最近发布了用于挑选翻译字符串的树枝gettext-extractor。但是,有一些可能的问题:
我没有使用symfony 2框架,并且没有使用twl的intl扩展名(我们已经构建了自己的扩展名以满足我们的目的)。
我们为gettext字符串{{ t('some string') }}
我们宁愿不必引入更多的外部依赖项,除非我们真的有,否则有人试图获取字符串需要设置twig和gettext提取器。
是否有一个标志我可以传递给xgettext来解决这个问题?解析工作正常。我只是希望gettext不会抛出错误。
答案 0 :(得分:1)
更改设置如下:
答案 1 :(得分:0)
所以我继续使用该工作流程几天,发现了以下问题:
如果我有一个像这样的资源包密钥:<a href="#" title="{{ t('somekey') }}">Test</a>
,我以前使用的设置就不会拿起密钥。
由于我已经在后台使用一个小的PHP脚本来监视和编译我的资产使用Assetic,我只需要添加几行以便将twig模板编译成PHP文件(http:// twig) .sensiolabs.org / DOC /扩展/ i18n.html#提取模板-字符串)。
然后我从POEdit中删除了Twig解析器,现在,所有的模板字符串都是从PHP文件中解析出来的,效果很好!
虽然这个解决方案有效,但我仍然希望找到一种方法来获取POEdit和gettext来本地解析twig文件。但是,如果有人在寻找解决方案,那么这个解决方案在此期间应该可以很好地工作。