Помощь по плюрализации локали Custom Rails I18n - PullRequest
5 голосов
/ 05 декабря 2010

Я пытаюсь реализовать специфичные для локали правила плюрализации в I18n & Rails, но мне не повезло.Вот что я делаю:

# in config/initializers/locale.rb
I18n::Backend::Simple.send(:include, I18n::Backend::Pluralization)
{
   # Force Use of :few key 
   :ru =>  {:i18n => {:plural => {:rule => lambda { |n| :few}}}}
}

# in config/locales/ru.yml
ru:
  user: 
    one: One User 
    few: Few Users
    many: Many Users
    other: Other Users

# Testing
script/console
>> I18n.locale = :ru ; I18n.t("user", :count => 20)
=> "Other Users"

Как вы можете видеть, я пытаюсь принудительно ввести ключ: немногие (он должен возвращать «Несколько пользователей»), просто чтобы посмотреть, будет ли работать этот плюрализатор чертовски... но без игры в кости :(

Вот среда, в которой я работаю:

  • Rails 2.3.8
  • i18n 0.5.0 gem

Есть идеи?

1 Ответ

5 голосов
/ 05 декабря 2010

Пробовал копировать вашу проблему, и имел ту же проблему.Переместил правило множественного числа в файл языкового стандарта и работал нормально.

Переключил файл языкового стандарта на стиль Ruby, так как обычный YAML по какой-то причине не понравился моей лямбде.

# config/initializers/locale.rb
I18n::Backend::Simple.send(:include, I18n::Backend::Pluralization)

# config/locales/ru.rb
{
  :ru => {
    :user => {
      :one   => "One User",
      :few   => "Few Users",
      :many  => "Many Users",
      :other => "Other Users"
    },
    :i18n => {
      :plural => {
        :rule => lambda { |n| :few }
      }
    }
  }
}

# Testing
$ script/console 
  Loading development environment (Rails 2.3.8)
  >> I18n.locale = :ru; I18n.t("user", :count => 20) #=> "Few Users"

может попробовать и посмотреть, поможет ли это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...