В zf2
у вас есть помощник вида translatePlural
. Который может использоваться следующим образом;ZF2 множественный переводчик, почему массив?
echo $this->translatePlural('car', 'cars', $num);
Так что, когда он говорит $num == 1
car
еще cars
(в зависимости от множественного правила, но теперь используют английское правило).
Чтобы перевести это, по файлу. Вы должны использовать массив;
'car' => [
'auto',
'autos',
],
Итак, теперь вы получите auto
если $num == 1
еще autos
.
Если у вас есть где-то еще в вашем коде для перевода car
, вы можете сделать translate('car')
, но это вернет уведомление array to string coverstion
, что очевидно не то, что мы хотим.
Поэтому, чтобы иметь возможность также перевести только car
и использовать множественное число, мне теперь нужно изменить код на что-то вроде:
echo $this->translatePlural('car_plural', 'cars', $num);
И языковая конфигурация;
'car_plural' => [
'auto',
'autos',
],
'car' => 'auto',
Для этого необходимо добавить перевод на английский язык для car_plural
. Таким образом, сообщения по умолчанию translatePlural
становятся ненужными при настройке по умолчанию, если вы не используете translatePlural
не для перевода, а только для того, чтобы выбрать между car
или cars
и не переводить его.
Но если вместо этого translatePlural
просто просмотрел $num
, используйте pluralRule
, чтобы выбрать между особым (автомобилем) или множественным числом (автомобили). Затем используйте вспомогательный помощник translate
для перевода сингулярного или множественного числа, у вас может быть простая конфигурация, а сообщение по умолчанию - внезапная работа снова;
'car' => 'auto',
'cars' => 'autos',
Нет странных ключей, вам не нужен английский перевод или что-то еще странное.
Так что вопрос/tldr;
Почему множество ZF2 использует массив, а не просто проверяет, какой из них использовать и переводить? Кажется мне способ лучше.
Взгляните на эту дискуссию: https://github.com/zendframework/zf2/issues/4939 –