Можете ли вы вводить переменные в текст при использовании Zend_Translate в режиме множественного числа - PullRequest
4 голосов
/ 28 февраля 2012

Я пытаюсь использовать 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 такой способ использования множественного числа?Т.е. ввести значение переменной во множественную строку?Или мне нужно разделить строку до и после формы множественного числа, перевести каждый в отдельности, а затем объединить на выходе?

1 Ответ

2 голосов
/ 29 февраля 2012

В контроллере (или в другом месте):

<?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, чтобы найти более разумный способ сделать это.

...