1

JS ファイルでは、Gettext の翻訳に次の形式を使用します。

var str1 = '!t[The text that should be translated]';
var str2 = '!t[Some more text]';

この JS ファイルは PHP を使用して解析され、解析された文字列は Zend Framework Zend_Translate を介して翻訳されます。生成された JS は次のようになります。

var str1 = 'The text that should be translated';
var str2 = 'Some more text';

翻訳対象の文字列を抽出し、PHP ファイルを翻訳するために Poedit を使用していますが、非常にうまく機能します。Poedit
を使用して翻訳する文字列を解析する方法はありますか?'!t[...]'

問題を解決するのは、正規表現ベースの Poedit パーサーのようなものです。そのようなパーサーはありますか?

別の方法として、言語 PHP をパラメーターとして xgettext に基づいてソース コード パーサーを定義することもできます (xgettext は .js ファイルを認識せず、それらを C ファイルとして扱うため、これを行う必要があります)。次に、JS ファイルで次の形式を使用します。

var str1 = '<?=_t("The text that should be translated")?>';
var str2 = '<?=_t("Some more text")?>';

言うまでもなく、Poedit で文字列を解析できるようにするためだけに、あちこちで php のように見えるコードを使用するのは非常にクールではありません。

4

2 に答える 2

0

Poedit と xgettext は現在 JavaScript をサポートしています (正直なところ、2009 年にそうであったかどうかはわかりませんが、そうではなかったと思います) が、カスタム マークアップを含む文字列リテラルはサポートしていません。だからあなたはまだから抽出することはできません

var str1 = '!t[The text that should be translated]';

ただし、ヘルパー関数を使用して簡単に抽出できます。

var str1 = t('The text that should be translated');

tPoeditにキーワードとして追加するだけの場合。

于 2016-02-14T19:05:48.580 に答える
0

文字列に一致する正規表現

 $translated = preg_replace('/[\'"]\!t\[(.+)\][\'"]/e', 'translate_function('\\2')', $str);

\2 を \1 または \3 に置き換える必要があるかどうかはわかりません。解決策は、PCRE 正規表現エンジンによって提供される "e" 修飾子です。

于 2009-05-28T18:46:43.617 に答える