Shyam
Shyam

Reputation: 2377

Ruby On Rails: pluralize for other languages

I am building apps for a non-english audience. Right now, I use english nouns to name my models, yet I prefer to use native dutch ones. As the convention uses the plural of the class name for tables, I assume it is the pluralize method inside Rails (where it resides, I wouldn't know). How can I change the pluralize method and where is it located? Would this break Rails?

I am using Rails 2.3.5 and Ruby 1.8.7

Example: The Book class becomes books now. My Boek class becomes boeks, but it is grammatically correct to use boeken

Upvotes: 9

Views: 5775

Answers (4)

pSkarl
pSkarl

Reputation: 344

In addition, as far as views are concerned my preferred way of dealing with pluralizing foreign strings is i18n pluralization. Take a look at a straightforward example below.

# config/locales/en.yml

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

Then in view you can do

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

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

Check official documentation.
Hope that helps!

Upvotes: 2

Mr_LinDowsMac
Mr_LinDowsMac

Reputation: 2702

Perhaps won't help you because you want Dutch language, but for Spanish, French, Kazakh, Turkish or Norwegian, there is this:

https://github.com/davidcelis/inflections

Upvotes: 3

Christian Lescuyer
Christian Lescuyer

Reputation: 19253

Add your rules to an inflections.rb file in config/initializers. See the API documentation:

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

Upvotes: 15

lulalala
lulalala

Reputation: 17981

This is not answering the question specifically, but if a language has too much irregularities one can disable the inflector according to the discussion.

ActiveRecord::Base.pluralize_table_names = false

Upvotes: 1

Related Questions