PHP, но фреймворки всегда старался избегать. Недавно покинул прошлое место работы, сейчас в творческом отпуске всё-таки решил плотно заняться PHP фреймворками - при всех минусах, неоспорим самый важный плюс - скорость разработки (ну и большинство вакансий в основном требуют глубоких знаний основных фреймворков). Начать решил с Laravel.
Проекты над которыми я работаю, в своём большинстве требуют "многоязычности". На чистом PHP (без фремворков), в последнее время я отдаю предпочтение gettext, очень удобно - отдал переводчику файл, он его открыл в Poedit, перевел и вернул, и не нужно знать ему синтаксиса PHP даже базово. К тому же идеальная плюрализация в не зависимости от языка.
В Laravel, судя по документации, переводы - это массивы или JSON. Реализация вопросов не вызывает, кроме скорости работы при использовании фраз целиком в качестве ключей в сравнении с gettext (бывает большая путаница с использованием коротких ключей для фраз переводов для больших проектов). А вот плюрализация для языков, морфологически отличных от английского, при таком решении мне показалось проблематичной. Есть 0, 1, 2-4, 5-20, 21, 22-24 и т.д.
gettext решает эту проблему очень просто. Первое, что приходит в голову, это использовать gettext в Laravel, но возможно уже существуют решения для этого, поделитесь, чтобы не изобретать велосипед?
https://laravel.com/docs/8.x/localization#pluralization ?
https://laravel.su/docs/8.x/localization#pluralization trans_choice
Я как раз это и упомянул в своём вопросе. Это прекрасно работает для языков, например, германской группы. Но для русского к примеру, это выглядит как большой костыль. Представьте, к примеру, нужно выводить название чего-то и количество. Сколько фраз в переводе нужно, чтобы охватить диапазон от 0 до 30, к примеру? Для вот этого количества будут разные фразы ведь: 0, 1, 2-4, 5-20, 21, 22-24
ах да, дошло :D
Обсуждают сегодня