4

結果の文字列に変数値を挿入し、文字列に複数形を尊重させる必要がある状況でZend_translateを使用しようとしています。ビュースクリプトで通常の(複数形ではない)ビューヘルパー$ this-> translate()を使用すると、文字列に変数を挿入できます。

$this->translate('You have %1$s questions to answer', 3) 
// would result in "You have 3 questions to answer" being output

しかし、Zendが複数形の現代的な方法と呼んでいるものを使用する場合、これをどのように行うのですか?どうやら$this->translate()ビューヘルパー自体は複数形表記をサポートしていないようですが、代わりに呼び出す必要があります

$this->translate()->getTranslator()->translate( 
    array('You have %1$s question to answer', 
    'You have %1$s questions to answer', $someNr ) 
)

しかし、その時点では、変数プレースホルダーを持つ複数形の文字列しかなく、値が挿入された文字列はありません。言い換えれば、私が得ているのは次のとおりです。

答える%1$sの質問があります

私が欲しいのは

答える質問が2つあります

だから問題は、Zend_Translateはどういうわけか複数形を使用するこの方法をサポートしていますか?つまり、複数形の文字列に変数値を挿入しますか?または、複数形の前後で文字列を分割し、それぞれを個別に翻訳してから、出力で連結する必要がありますか?

4

1 に答える 1

2

コントローラ(または他の場所):

<?php
        $translate = new Zend_Translate (array (
            'adapter' => 'Zend_Translate_Adapter_Array',
            'content' => array (
                'test' => 'You have %1$s %2$s to answer'
            ),
            'locale' => 'en'
        ));

ビューで:

<?php
$x = 1;
echo $this->translate ('test', $x, $this->translate (array (
    'question', 
    'questions', 
    $x 
)));
?>

ただし、これを行うためのよりインテリジェントな方法については、http://framework.zend.com/manual/en/zend.translate.plurals.htmlを参照してください。

于 2012-02-29T07:11:20.170 に答える