2016-06-23 11 views
0

Ich versuche, einige Zähler der Elemente nach der Grammatik der Sprache zu übersetzen. Ich habe mit einem Problem konfrontiert, das doc über Pluralformen sagt und sie sind für jede Sprache unterschiedlich. Ich habe erwartet, dass rules sind bereits innerhalb I18n und was ich tun muss, ist nur füllen Übersetzungen. Aber wenn ich den Code von pluralize Methode bei i18n/backend/base.rb lesenRails Plural Regeln für Übersetzungen

def pluralize(locale, entry, count) 
     return entry unless entry.is_a?(Hash) && count 

     key = :zero if count == 0 && entry.has_key?(:zero) 
     key ||= count == 1 ? :one : :other 
     raise InvalidPluralizationData.new(entry, count) unless entry.has_key?(key) 
     entry[key] 
    end 

fand ich, dass es nur en unterstützt. Zum Beispiel arbeite ich jetzt an arabischer Übersetzung.

I18n.backend.store_translations :ar, path: { one: 'one', two: 'two', other: 'other', many: 'many', few: 'few'} 

Hier füllte ich Übersetzung Backend und ich erwarte, dass, wenn ich 11 count Option passieren dann erhalte ich :many Übersetzung, wie durch die Sprache Plural Regeln festgelegt.

I18n.t :path, count: 11, locale: :ar #should return 'many' 

Muss ich diese Regeln selbst angeben? Dann wo? Oder muss ich etwas swizzle?

+0

Mögliche Duplikate von [i18n Pluralisierung] (http://stackoverflow.com/questions/6166064/i18n-pluralization) – rene

Antwort

0

Sie können Ihre eigenen Regeln für diese erstellen, können Sie die Datei erstellen: config/initializers/inflections.rb und passen Sie dieses Beispiel auf Ihre Realität:

ActiveSupport::Inflector.inflections(:en) do |inflect| 
    inflect.plural /^(ox)$/i, '\1\2en' 
    inflect.singular /^(ox)en/i, '\1' 

    inflect.irregular 'octopus', 'octopi' 

    inflect.uncountable 'equipment' 
end 

einen Blick in die Dokumentation Nehmen : Inflections

0

This Antwort löste mein Problem. Ich muss den Lade-Modus für benutzerdefinierte Pluralregeln aktivieren und dann für jeden Fall ein Schlüsselwort angeben.

+0

Wenn Sie ein Duplikat finden, schließen Sie bitte Ihre Frage als solche. – rene