0

この問題はしばらく私を悩ませてきましたが、一度解決したいと思います。

PHP アプリケーションでtwig テンプレート エンジンを使用しています。Poeditの最新バージョン( xgettext 0.18.1 を使用) を使用して、ファイルの翻訳文字列を解析しています。

これらの手順を使用して、小枝で動作するように Poedit をセットアップしました。

すべて問題なく動作しますが、問題は、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 テンプレートの文字列がカタログに読み込まれます。

翻訳文字列を選択するために最近リリースされた twig 用のgettext-extractorがあることを私は知っています。ただし、次のような問題が発生する可能性があります。

  • 私は symfony 2 フレームワークを使用しておらず、twig の intl 拡張も使用していません (目的に合わせて独自に構築しました)。

  • gettext 文字列に別の文字を使用します{{ t('some string') }}

  • 実際にそうでない限り、外部依存関係をさらに導入する必要はありません。 そうしないと、文字列を取得しようとする誰かが twig と gettext エクストラクタをセットアップする必要があります。

この問題を解決するために xgettext に渡すことができるフラグはありますか? 解析は正常に機能します。エラーが gettext によってスローされないようにしたいだけです。

4

2 に答える 2

0

そのため、そのワークフローを数日間使い続けたところ、次の問題が見つかりました。

so: のようなリソース バンドル キーがある場合<a href="#" title="{{ t('somekey') }}">Test</a>、以前に使用していた設定ではキーが取得されません。

Asseticを使用してアセットを監視およびコンパイルするための小さな PHP スクリプトがバックグラウンドで既に存在していたので、小枝テンプレートを PHP ファイルにコンパイルするための行をいくつか追加しただけです (http://twig.sensiolabs.org/doc/ extensions/i18n.html#extracting-template-strings)。

次に、POEdit から Twig パーサーを削除すると、すべてのテンプレート文字列が PHP ファイルから解析されるだけになり、うまく機能します!

このソリューションは機能しますが、POEdit と gettext を取得して twig ファイルをネイティブに解析する方法を見つけたいと思います。ただし、誰かが解決策を探している場合、当面はこれでうまくいくはずです。

于 2012-09-20T23:37:29.173 に答える