1

PHPZend 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を作成する方法を知っている人はいますか?または誰かがより良いかもしれない他の解決策を持っていますか?

助けてくれてありがとう!

編集:

なぜ私が反対票を投じられたのかわかりません。しかし、私は質問を明確にしようとしました。

4

3 に答える 3

2

ダミー関数を使用してそれに文字列を渡す場合、文字列パラメーターを受け入れるように someZendFunction をリファクタリングしてから、その関数名「someZendFunction」を poedit キーワードのリストに追加しないのはなぜですか? これにより、余分な関数呼び出しがなくなり、コードが少しきれいになります。または、その「someZendFunction」を t(9 関数にラップして、面倒な作業を行うこともできます!これにより、余分な入力も不要になります!

例:

function t($str){
    echo someZendFunction($str);
}

そして、コードのどこかに:

t('Translate this string please!');

お役に立てれば!

于 2012-04-12T01:27:05.290 に答える
0

わかった!ダミー関数を作成することにより

function t($string) {
    return $string;
}

echo SomeZendFunction( t('Another text to translate') );

このt機能を POEdit の翻訳キーワードに追加できます。次に、後で Zend によって変換されるすべての文字列をこのダミー関数に埋め込むことができます。

これにより、Zend はそれを翻訳できるようになり、POEdit はそれを翻訳対象の文字列として認識します。

誰かがより良い解決策を持っている場合は、投稿してください。

于 2011-10-04T08:02:04.740 に答える
0

「可変」という言葉が示すように、値が時々変化することを意味するため、値がどうなるかを事前に知る可能性はありません。あなたが翻訳しようとしている方法は間違っています。

于 2011-10-04T07:53:41.917 に答える