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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ruby On Rails:用于其他语言的复数形式相关的知识,希望对你有一定的参考价值。

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

我使用的是Rails 2.3.5和Ruby 1.8.7

示例:Book类现在成为书籍。我的Boek课程变得很神圣,但使用boeken在语法上是正确的

答案

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

ActiveSupport::Inflector.inflections do |inflect|
  inflect.plural 'boek', 'boeken'
end
另一答案

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

https://github.com/davidcelis/inflections

另一答案

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

ActiveRecord::Base.pluralize_table_names = false

另一答案

另外,就视图而言,我处理复数外来字符串的首选方法是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。 希望有所帮助!

以上是关于Ruby On Rails:用于其他语言的复数形式的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails - ActiveRecord 关联问题:查询未正确进行(单数与复数?)

在 Ruby on Rails 中测试一个单词是单数还是复数

用于分发离线 Ruby on Rails 应用程序的选项

用于 ruby​​ on rails 的 Mahout 插件

ruby on rails(model)

无法保存其他表中的数据。 Ruby on Rails 5