Уведомления
Очистить всё
Rails и веб
3
Сообщения
3
Пользователи
6
Реакции
424
Просмотры
3 октября 2025 09:13
Rails 8.0, в ru.yml для счётчика one и other, а на странице «2 заказов» и «21 заказов». Добавил few и many, не помогло. Что ещё нужно?
2 ответа
3 октября 2025 15:00
Сам I18n в Rails знает только английское правило: один или «всё остальное», поэтому few и many он просто не ищет. Нужно правило множественного числа для русского. Проще всего гем rails-i18n, там оно уже есть, заодно переведённые сообщения валидаций. Если гем тащить не хочется, можно руками:
# config/initializers/pluralization.rb
require "i18n/backend/pluralization"
I18n::Backend::Simple.include(I18n::Backend::Pluralization)
# config/locales/plurals.rb
{ ru: { i18n: { plural: { rule: lambda { |n|
mod10, mod100 = n % 10, n % 100
if mod10 == 1 && mod100 != 11 then :one
elsif (2..4).cover?(mod10) && !(12..14).cover?(mod100) then :few
else :many
end
} } } } }
В yml оставь one, few, many, а other тоже не удаляй, на него идёт откат, если нужного ключа нет. Сама на этом спотыкалась, так что проверь заодно 11, 12 и 111, обычно ломается на них.