0

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

我在我的 PHP 应用程序中使用了twig 模板引擎。我正在使用最新版本的Poedit(它使用 xgettext 0.18.1)来解析我的文件以获取翻译字符串。

我已经使用这些说明设置了 Poedit 以使用 twig 。

一切正常,但问题是当我更新我的 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,一切似乎都很好,然后将树枝模板中的字符串加载到目录中。

我知道最近发布了一个gettext-extractor for twig 来挑选翻译字符串。但是,有一些可能的问题:

  • 我没有使用 symfony 2 框架,也没有使用 twig 的 intl 扩展(我们已经构建了自己的以适应我们的目的)。

  • 我们对 gettext 字符串使用不同的字符{{ t('some string') }}

  • 我们宁愿不必引入更多外部依赖项,除非我们真的有,否则试图获取字符串的人需要设置 twig 和 gettext 提取器。

有没有我可以传递给 xgettext 的标志来解决这个问题?解析工作正常。我只是希望 gettext 不会引发错误。

4

2 回答 2

1

像这样更改设置:

  1. 转到首选项-> 解析器
  2. 选择PHP -> 编辑
  3. 扩展名列表 .... -> .php, .phtml
  4. 将此“ xgettext --language=PHP --force-po -o %o %C %K %F ”插入Parser Command:字段。
  5. 还有Catalog --> Properties --> Translation Properties TAB --> Charset utf-8
于 2014-10-16T08:30:04.067 回答
0

所以我继续使用该工作流程几天,发现以下问题:

如果我有一个像这样的资源包键:<a href="#" title="{{ t('somekey') }}">Test</a>,我之前使用的设置将无法获取该键。

由于我在后台已经有一个小的 PHP 脚本来使用Assetic监视和编译我的资产,所以我只是添加了几行,以便将 twig 模板编译成 PHP 文件(http://twig.sensiolabs.org/doc/扩展/i18n.html#extracting-template-strings)。

然后我从 POEdit 中删除了 Twig 解析器,现在,所有的模板字符串都只是从 PHP 文件中解析出来的,效果很好!

虽然这个解决方案有效,但我仍然想找到一种方法来让 POEdit 和 gettext 本地解析树枝文件。但是,如果有人正在寻找解决方案,那么这个解决方案应该同时工作得很好。

于 2012-09-20T23:37:29.173 回答