Gettext throws"警告:未终止字符串"解析twig模板文件时

时间:2012-09-14 04:04:34

标签: parsing internationalization twig gettext

这个问题困扰了我一段时间,但我想一劳永逸地解决这个问题。

我在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

这是对话框:

enter image description here

这是有问题的文件:

{% 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不会抛出错误。

2 个答案:

答案 0 :(得分:1)

更改设置如下:

  1. 转到 Prefernces - &gt;解析器
  2. 选择 PHP - &gt;修改
  3. 延期清单.... - &gt; .php, .phtml
  4. 插入此&#34; xgettext --language = PHP --force-po -o%o%C%K%F &#34;进入 Parser Command:字段。
  5. 还有目录 - &gt;属性 - &gt;翻译属性TAB - &gt; Charset utf-8

答案 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文件。但是,如果有人在寻找解决方案,那么这个解决方案在此期间应该可以很好地工作。