Ruby On Rails:用于其他语言的复数形式

时间:2010-06-08 15:01:24

标签: ruby-on-rails ruby internationalization customization

我正在为非英语用户构建应用程序。现在,我使用英语名词命名我的模型,但我更喜欢使用原生荷兰语。由于约定使用了表的多个类名,我假设它是Rails中的复数方法(它所在的位置,我不知道)。如何更改复数方法及其位置?这会破坏Rails吗?

我正在使用Rails 2.3.5和Ruby 1.8.7

实施例: Book类现在变为书籍。 我的Boek课程变得 boeks ,但使用 boeken

在语法上是正确的

4 个答案:

答案 0 :(得分:13)

将规则添加到config / initializers中的 inflections.rb 文件中。请参阅API documentation

ActiveSupport::Inflector.inflections do |inflect|
  inflect.plural 'boek', 'boeken'
end

答案 1 :(得分:2)

也许不会帮助你,因为你想要荷兰语,但对于西班牙语,法语,哈萨克语,土耳其语或挪威语,有这样的:

https://github.com/davidcelis/inflections

答案 2 :(得分:1)

这并没有具体回答这个问题,但是如果一种语言有太多不规则,可以根据discussion禁用变形器。

ActiveRecord::Base.pluralize_table_names = false

答案 3 :(得分:0)

另外,就观点而言,我处理复数外来字符串的首选方法是 i18n复数。看看下面一个简单的例子。

# config/locales/en.yml

en:
  message:
    one: You have 1 message #Your foreign string
    other: You have %{count} messages #Your foreign string

然后在视图中你可以做到

# app/views/messages/index.html.erb

<%= t("message", count: current_user.messages.count) %>

检查official documentation
希望有所帮助!