2010-06-08 22 views
7

Tôi đang tạo ứng dụng cho đối tượng không phải tiếng Anh. Ngay bây giờ, tôi sử dụng danh từ tiếng Anh để đặt tên cho các mô hình của mình, nhưng tôi thích sử dụng các mẫu tiếng Hà Lan bản địa. Theo quy ước sử dụng số nhiều của tên lớp cho các bảng, tôi cho rằng đó là phương thức số nhiều bên trong Rails (nơi nó cư trú, tôi sẽ không biết). Làm thế nào tôi có thể thay đổi phương thức số nhiều và nó nằm ở đâu? Điều này sẽ phá vỡ Rails?Ruby On Rails: đa nguyên hóa cho các ngôn ngữ khác

Tôi đang sử dụng Rails 2.3.5 và Ruby 1.8.7

Ví dụ: Lớp Book trở thành sách bây giờ. My Boek lớp trở nên boeks, nhưng nó là đúng ngữ pháp sử dụng boeken

Trả lời

11

Thêm quy tắc của bạn đến một inflections.rb tập tin trong config/initializers. Xem API documentation:

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

Tôi nhớ một thời gian ngắn khai thác thành các nút để đa nguyên cho ngôn ngữ mẹ đẻ của tôi ... đó là sự hỗn loạn, bất thường khắp nơi. ^^ – ANeves

+1

Tôi thấy ở đây (http://www.dutchgrammar.com/en/?n=NounsAndArticles.11) rằng sự kết thúc -en là thường xuyên. Bạn có thể mã quy tắc mặc định bằng .plural và .singular, sau đó thực hiện theo quy tắc số nhiều bất thường. –

+0

Tôi có thể thử googling để xem nếu có ai đã tạo ra một inflections.rb cho Hà Lan. Không cần mọi người mắc sai lầm nhiều lần! :) –

1

này không trả lời các câu hỏi cụ thể, nhưng nếu một ngôn ngữ có quá nhiều bất thường người ta có thể vô hiệu hóa các inflector theo discussion.

ActiveRecord::Base.pluralize_table_names = false

2

Có lẽ sẽ không giúp bạn bởi vì bạn muốn ngôn ngữ Hà Lan, nhưng đối với Tây Ban Nha, Pháp, Kazakhstan, Thổ Nhĩ Kỳ hay Na Uy, có này là:

https://github.com/davidcelis/inflections

0

Bên cạnh đó, như xa như quan điểm có liên quan cách ưa thích của tôi đối phó với số nhiều chuỗi nước ngoài là i18n số nhiều. Hãy xem một ví dụ đơn giản dưới đây.

# config/locales/en.yml 

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

Sau đó, theo quan điểm của bạn có thể làm

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

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

Kiểm tra official documentation.
Hy vọng điều đó sẽ hữu ích!

Các vấn đề liên quan