2009-05-28 4 views
1

は、我々はのgettext翻訳のために次の形式を使用します。
正規表現ベースのパーサー?私たちのJSファイルで

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'; 

を変換すると、我々はPoeditを使用し、当社のPHPファイルを変換するために、それは非常によく動作します。
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のようなコードを使用することが本当にかっこ悪いです、と言って。

答えて

0

あなたの文字列にマッチする正規表現\ 2 \ 1か\ 3で置き換えられる必要がある場合、私は知らない

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

、あなたソリューションはPCRE正規表現エンジンが提供する「e」の修飾子です。

+1

申し訳ありませんファビアン、私はあなたが私が探しているものを理解しているのか疑いがあります。 タイトルによれば、翻訳する文字列をPoeditで解析することです。 JSファイルから翻訳される文字列を自動的に抽出するには、これが必要です。 Poeditは、それが簡単にサポートする言語に対してこれを行います。これはPHPファイルと完全に動作しますが、JSをサポートしていません。たとえそれがあったとしても、私たちが使用しているフォーマットはそのままではサポートされません。私たちが本当に必要とするのは、Poedit用のRegexベースのソースコードパーサーです。 PS:解決策が何を解決するのか本当に分かりません。 –

+0

さて、PHPを使ってjavascriptファイルを解析し、php-gettextを使ってトークンを翻訳したと思います。 私はこのページがあなたの望むものを助けることができると思います:http://www.tine20.org/wiki/index.php/Developers/Concepts/Translation_Howto –

0

PoeditとxgettextはJavaScriptを今サポートしています(2009年の場合は正直なところわかりませんが、そうではないと思いますが)、カスタムマークアップ付きの文字列リテラルをサポートしていません。だから、あなたはまだ

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

から抽出することはできませんが、簡単にヘルパー関数を使用して抽出することができます。

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

あなただけPoeditでキーワードとしてtを追加する場合。