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

问题描述 投票:8回答:4

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

我使用的是Rails 2.3.5和Ruby 1.8.7

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

ruby-on-rails ruby internationalization customization
4个回答
13
投票

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

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

2
投票

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

https://github.com/davidcelis/inflections


1
投票

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

ActiveRecord::Base.pluralize_table_names = false


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。 希望有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.