.js ファイルから gettext 文字列を抽出するには、少なくとも 2 つの方法があることを知っています。Python モードで gettext パーサーを使用する方法 (いくつかの欠点があると聞いています) と、Python で記述された Babel を使用する方法です。
HTML ファイルから gettext 文字列を抽出する方法、またはより正確には Javascript テンプレート (アンダースコア、口ひげなど) を抽出する方法はありますか? 私の知る限りでは、Babel も gettext もそれを行いません。
私の友人がBabelを適応させようとしましたが、いくつかの翻訳が欠けているなどの深刻な問題がありました...
更新: 友人がこれについて少し指示してくれたので、今ではすべての文字列を好きなように抽出できるようです。私が見逃しているのは「翻訳者のコメント」だけです。私が使用しているコマンドは次のとおりです。
find . -iname '*.html' -o -iname '*.js' | xargs xgettext --language=Python --from-code=utf-8 --keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3
これにより、キーワードに pgettext と npgettext が含まれます
更新 2: HTML タグ属性内にある gettext メッセージを抽出するには、JS 部分の間に改行を挿入する必要があることを発見しました。たとえば、これを変換する必要がありました。
<a href="" title="<%= ST.i18n.gettext('Click to add another row') %>"></a>
これに:
<a href="" title="
<%= ST.i18n.gettext('Click to add another row') %>"></a>
Python モードの xgettext は、同じ行にある場合、gettext メッセージを抽出しません。これは私にとってはうまくいくように見える簡単なハックです。
更新 3: PHP モードの xgettext は問題なく (少なくとも Undsrscore テンプレートを使用して) HTML からメッセージを抽出し、翻訳者のコメントにも適用されるようです。
find ../app -iname '*.html' | xargs xgettext --language=PHP --from-code=utf-8 -c --keyword=gettext --keyword=ngettext:1,2 --keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3 -o translations.po
このようにして、テンプレート ファイルで通常の書式設定を維持できます。
<a href="" title="<%= ST.i18n.gettext('Click to add another row') %>"></a>