yaroslav / russian

Russian language support for Ruby and Rails | Поддержка русского языка для Ruby и Rails
MIT License
475 stars 127 forks source link

Проблема с pluralize #6

Closed AlekSi closed 14 years ago

AlekSi commented 14 years ago

Доброго времени суток,

Прикручиваю russian к Redmine. При активации gem'а столкнулся с исключением:

Файл переводов содержит: label_x_open_issues_abbr_on_total: zero: 0 открыто / {{total}} one: 1 открыт / {{total}} other: "{{count}} открыто / {{total}}"

Исключение: translation data {:other=>"{{count}} открыто / {{total}}", :zero=>"0 открыто / {{total}}", :one=>"1 открыт / {{total}}"} can not be used with :count => 8

Backtrace: gems/russian-0.2.5/lib/russian/backend/advanced.rb:118:in pluralize' gems/activesupport-2.3.5/lib/active_support/vendor/i18n-0.1.3/lib/i18n/backend/simple.rb:40:intranslate' gems/activesupport-2.3.5/lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb:165:in t' redmine/lib/redmine/i18n.rb:13:inl'

Пройдясь отладчиком, обнаружил, что в вызове pluralize используется locale_pluralize и key превращается в :many. Без russian всё работает.

yaroslav commented 14 years ago

Это ошибка в переводе Redmine — в russian другие ключи плюрализации для русского языка (one/few/many)

Please do investigate

AlekSi commented 14 years ago

Может, имеет смысл реализовать такой алгоритм:

Как вы считаете?

yaroslav commented 14 years ago

Не, не имеет. Для каждого языка есть ключи, явно заданные в CLDR; не вижу смысла делать фолбек для данной конкретной неверно переведенной строки, а вот вы для своего приложения (если таких строк 100500) можете перегрузить AdvancedBackend и сделать фоллбек.

AlekSi commented 14 years ago

Однако в этом случае russian является деструктивным: без него работает, с ним - нет. :)

yaroslav commented 14 years ago

Деструктивным является перевод — сделайте I18n.locale = :en и все будет круто.

2000 строк yml-файла локали, из опыта, переводятся за день как нефиг делать.

AlekSi commented 14 years ago

Спасибо, буду делать.