Transchoice Symfony не может выбрать перевод, когда значение равно «0», а язык «словенский» - PullRequest
0 голосов
/ 26 апреля 2018
'permission.label'|transchoice(0, {}, 'someBundle')

С кодом выше я получаю следующую ошибку при включении "sl" в качестве локали:

Невозможно выбрать перевод для "Dovoljenje | Dovoljenja" с локалью «sl» для значения «0». Дважды проверьте, что этот перевод имеет правильный варианты множественного числа (например, «есть одно яблоко | есть%, считают% яблок»).

На других языках (английский, немецкий, французский, итальянский, еще +10) у меня нет проблем с этим. Только словенский ломает мое полное приложение bc transchoice не может выбрать перевод.

Например, «Permission | Permissions» отлично работает с локалью «en» и значением «0». Но в «sl» он выдаст вышеуказанную ошибку.

Есть идеи, что здесь происходит?

Спасибо!

1 Ответ

0 голосов
/ 26 апреля 2018

Ваша строка "Dovoljenje|Dovoljenja" имеет только два варианта, например, многие языки, использующие формы «один» и «другой».

В словенском языке больше форм, чем в других, поэтому другие языки работают, а в словенском - нет.

С учетом правил множественного числа, включенных в компонент перевода , уравнение для словенского языка выглядит следующим образом:

(1 == $number % 100) ? 0 : ((2 == $number % 100) ? 1 : 
(((3 == $number % 100) || (4 == $number % 100)) ? 2 : 3));

Это указывает на то, что существует четыре формы: «одна», «две», «немногие» и «другие». Подстановка $number=0 вернет последний параметр "other" как смещение [3], которого нет в вашей строке.

Я не говорю по-словенски, но если «два», «немногие» и «другие» могут иметь одинаковый перевод, тогда установите для вашей строки значение "Dovoljenje|Dovoljenja|Dovoljenja|Dovoljenja", и ошибка исчезнет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...