Мы используем компонент Symfony Translation в нашем PHP-приложении. Он способен обрабатывать множественное число очень умным способом , но, насколько я могу судить, он может обрабатывать только одно «количество» на строку.
Например, он может переводить
У меня 3 яблока.
Или
У меня есть 1 апельсин.
Но я не могу найти способ обработки более сложных строк, таких как:
У меня 3 яблока и 1 апельсин.
Теперь очевидное решение состоит в том, чтобы перевести их по отдельности, а затем соединить их вместе, но в моей реальной жизненной ситуации последовательности являются более сложными, чем это, и, согласно нашей немецкой команде, порядок компонентов не всегда может быть гарантированно так же. Придерживаясь моего примера с поддельными яблоками и апельсинами, у нас может быть английская строка:
У меня будет 3 яблока каждое утро и 1 апельсин каждый будний день в течение следующих 2 недель.
Я бы хотел получить строку перевода, например:
I'll have {{1 apple|%count_apples% apples}} each morning and {{1 orange|%count_oranges% oranges}} each weekday afternoon for the next {{1 week|%count_weeks% weeks}}.
И нам нужно учесть, что на другом языке структура предложения может работать, только если мы используем:
В течение следующих 2 недель у меня будет 3 яблока каждое утро и 1 апельсин каждый будний день.
For the next {{1 week|%count_weeks% weeks}}, I'll have {{1 apple|%count_apples% apples}} each morning and {{1 orange|%count_oranges% oranges}} each weekday afternoon.
Более того, чтобы усложнить ситуацию, слово «и» может меняться в зависимости от того, является ли одна из величин множественным числом. Сейчас нас беспокоит только английский и немецкий, но в среднесрочной перспективе нам понадобятся другие языки, и тогда не будет только единственного и множественного числа.
Мы открыты для использования чего-то другого, кроме компонента Symfony Translation, для этого раздела, если это необходимо, так как оно совершенно автономно.
Есть ли у кого-нибудь опыт в этом деле или есть идеи относительно того, как это осуществить?