Symfony i18n fromat_number_choice не работает должным образом

У меня есть следующий код с использованием format_number_choice в Symfony 1.4:

<?php echo format_number_choice(
        '[0]You do not have any remaining invites.|[1]You have one invite.|(1,+Inf]You have %1% invites.', array('%1%' => $users->getInvitatii()), $users->getInvitatii(), 'nrchoice') ?>

Строка перевода выглядит так:

<trans-unit id="2" approved="yes">
        <source>[0]You do not have any remaining invites.|[1]You have one invite.|(1,+Inf]You have %1% invites.</source>
        <target state="translated">[0]Nu mai aveți nicio invitație|[1]Mai aveți o invitație|{n: n % 100 < 20} Mai aveți %1% invitații.|{n: n % 100 > 20} Mai aveți %1% de invitații.</target>
</trans-unit>

В румынском есть 2 типа множественного числа: number%100 < 20 и number%100 >= 20. Единственная проблема в том, что моя строка не переведена, и я предполагаю, что в моем синтаксисе есть ошибка, но я не могу понять, в чем проблема. Я нашел этот синтаксис в документации Symfony 1.4.


person Daniel    schedule 01.02.2013    source источник
comment
Вы получаете ошибку? Вы пытались написать источник на английском языке с двумя формами множественного числа вместо того, чтобы оставить выбор по умолчанию?   -  person j0k    schedule 01.02.2013
comment
Ну, это интересный факт: он отлично работает, если я использую этот синтаксис непосредственно в format_number_choice. Он просто не хочет работать с переведенной строкой.   -  person Daniel    schedule 01.02.2013
comment
@Daniel Попробуйте закодировать › как и ‹ как, потому что они недействительны в xml.   -  person 1ed    schedule 03.02.2013


Ответы (1)


Не могли бы вы попробовать это:

PHP-код:

<?php echo format_number_choice(
  '[0]You do not have any remaining invites.|[1]You have one invite|{n: n % 100 < 20} You have %1% invites.|{n: n % 100 > 20} You have %1% invites.', 
  array('%1%' => $users->getInvitatii()), $users->getInvitatii(), 'nrchoice')
?>

Внутри вашего файла перевода:

<trans-unit id="2" approved="yes">
  <source>[0]You do not have any remaining invites.|[1]You have one invite|{n: n % 100 < 20} You have %1% invites.|{n: n % 100 > 20} You have %1% invites.</source>
  <target state="translated">[0]Nu mai aveți nicio invitație|[1]Mai aveți o invitație|{n: n % 100 < 20} Mai aveți %1% invitații.|{n: n % 100 > 20} Mai aveți %1% de invitații.</target>
</trans-unit>
person j0k    schedule 01.02.2013
comment
Что находится внутри вашего узла file из вашего xliff-файла? - person j0k; 02.02.2013