ruby-on-rails - Custom Rails I18n Locale 多元化帮助

标签 ruby-on-rails ruby internationalization

我正在尝试在 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"

正如您所看到的,我正在尝试强制使用 :few 键(它应该返回“Few Users”),只是为了看看这个该死的复数是否会起作用……但没有骰子:(

这是我运行的环境:

  • rails 2.3.8
  • 国际化 0.5.0 gem

有什么想法吗?

最佳答案

尝试重现您的问题,但遇到了同样的问题。将复数规则移到语言环境文件中,效果很好。

将语言环境文件切换为 Ruby 风格,因为出于某种原因常规 YAML 似乎不喜欢我的 lambda。

# 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"

可以尝试一下,看看是否有帮助

关于ruby-on-rails - Custom Rails I18n Locale 多元化帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4356990/

相关文章:

ruby-on-rails - 查找后的 Mongoid 文档持久性

ruby - 有没有更简单的方法来刷新 Rails 中的页面

ruby - 如何从 ruby​​ 2.2.3 升级到 ruby​​ 2.3.0

java - Java java.util.ResourceBundle 的复数形式

java - 如何判断用户喜欢简体字还是繁体字

java - 从属性文件读取问题(空格)

ruby-on-rails - 我什么时候使用 save!, create!和更新属性!在 Rails 中?

ruby-on-rails - 乘客不断抛出连接错误

ruby-on-rails - 在 Rails3 中是否可以有一个多部分形式 => true 并使用远程 => true

ruby - 与伪造的 `if` block 内的赋值操作混淆