PHP、Zend Framework、Zend_Translate(gettextアダプター)を使用しています。翻訳を編集するには、xgettextを利用して翻訳対象の文字列をフェッチするPOEditを使用します。
POEdit(xgettext)は、翻訳する文字列を見つけるためにキーワードを検索します。したがって、キーワードを検索する場合、テキストが次のように直接翻訳関数に渡されるときにtranslate
、POEditは文字列を問題なく見つけることができます。'Text to translate'
echo translate('Text to translate');
ただし、多くの場合、文字列は、変数をパラメーターとして使用してtranslate関数を呼び出して、変換を行うZend関数に渡されます。
function SomeZendFunction( $array ) {
return translate( $array['string'] );
}
...
echo SomeZendFunction( array('string'=>'Another text to translate') );
// translate('Another text to translate');
これにより、POEdit(xgettext)は翻訳する文字列の検索に失敗します。上記の例では、POEditで検索したい文字列はですが、関数に'Another text to translate'
直接渡されないため、検索されません。translate
では、どのように問題を解決するのですか?
私の現在の解決策は、POEditで見つからなかったすべての文字列の長いリストを含むダミーファイルを作成することです。
<?php // Dummy file, only accessed by POEdit when scanning for strings to translate
translate('Text to translate');
translate('Another text to translate');
translate('A third text to translate');
....
ただし、このソリューションの欠点は、文字列を更新するときに、ダミーファイルを変更して元の文字列を見つける必要があることです。これにより、保守がより困難になります。
私が考えた別の解決策は、呼び出し後にコメントに翻訳文字列を追加することでしたSomeZendFunction
(上記の例を参照)が、コメントを無視するため、xgettextにそれを受け入れさせることができません。
それで、コメント内の文字列を受け入れるようにxgettextを作成する方法を知っている人はいますか?または誰かがより良いかもしれない他の解決策を持っていますか?
助けてくれてありがとう!
編集:
なぜ私が反対票を投じられたのかわかりません。しかし、私は質問を明確にしようとしました。