Rails 3和斯洛文尼亚语复数

时间:2011-08-04 09:55:54

标签: ruby-on-rails-3 localization pluralize

我想在Rails 3.0.9中使用t('errors', :count => 2)斯洛文尼亚语翻译,并希望它返回“2 napaki”,这是一种特殊的复数形式的斯洛文尼亚语。

我创建了locales / sl.yml并拥有以下代码:

sl:
  error:
    one: %{count} napaka
    two: %{count} napaki
    other: %{count} napak

但这似乎不起作用。

1 个答案:

答案 0 :(得分:1)

确保将您的翻译放在config / locales / sl.yml中。您还需要创建一个文件config / locales / plurals.rb并将以下代码放在其中:

# More rules in this file: https://github.com/svenfuchs/i18n/blob/master/test/test_data/locales/plurals.rb
I18n::Backend::Simple.send(:include, I18n::Backend::Pluralization)
{
  :'sl' => { :i18n => { :plural => { :rule => lambda { |n| [1].include?(n % 100) && ![11].include?(n % 100) ? :one : [2].include?(n % 100) && ![12].include?(n % 100) ? :two : [3, 4].include?(n % 100) && ![13, 14].include?(n % 100) ? :few : :other }}}}
}

在您的application.rb中,确保设置默认语言环境:

class Application < Rails::Application
  ...
  config.i18n.default_locale = :sl
  ...
end

确保在进行这些更改后重新启动服务器。除了:one, :two, :other,您还可以使用:few来表示3,4,......

您也可以have a look at this gist完全按照您的要求行事。