2010-06-08 15 views
7

Sto costruendo app per un pubblico non inglese. In questo momento, uso nomi in inglese per nominare i miei modelli, ma preferisco usare quelli olandesi nativi. Poiché la convenzione usa il plurale del nome della classe per le tabelle, presumo sia il metodo pluralize all'interno di Rails (dove risiede, non lo saprei). Come posso modificare il metodo pluralize e dove si trova? Questo romperebbe Rails?Ruby On Rails: pluralize per altre lingue

Sto usando Rails 2.3.5 e 1.8.7 di Ruby

Esempio: la classe book diventa libri ora. classe mio Boek diventa boeks, ma è grammaticalmente corretto usare Boeken

risposta

11

Aggiungi le regole in un file diinflections.rb in config/inizializzatori. Vedere la API documentation:

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

Ricordo di aver brevemente accennato alle inflessioni per pluralizzare per la mia lingua natia ... era il caos, l'irregolarità dappertutto. ^^ – ANeves

+1

Vedo qui (http://www.dutchgrammar.com/en/?n=NounsAndArticles.11) che la terminazione -en è quella normale. Dovresti essere in grado di codificare la regola predefinita con .plural e .singular, quindi seguirla con plurali irregolari. –

+0

Probabilmente cercherò su google per vedere se qualcuno ha già creato un inflections.rb per l'olandese. Non c'è bisogno che le persone sbagliano più di una volta! :) –

1

Questo non risponde alla domanda specifica, ma se una lingua ha troppe irregolarità si può disabilitare l'inflettore secondo il discussion.

ActiveRecord::Base.pluralize_table_names = false

0

Inoltre, come Per quanto riguarda le visualizzazioni, il mio modo preferito di trattare le stringhe straniere plurali è i18n pluralization. Dai un'occhiata a un semplice esempio qui sotto.

# config/locales/en.yml 

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

Poi in considerazione si può fare

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

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

Controllare official documentation.
Spero che questo aiuti!