14

Używam Rails 3.1.1 i chciałbym poprawnie przetłumaczyć komunikaty o błędach dla ActiveModel. Nie wiem, czy nadpisanie i18n_scope jest właściwym sposobem na rozwiązanie mojego problemu (lub jeśli istnieją inne sposoby), ale official documentation mówi:Jak obsługiwać tłumaczenia dla ActiveModel?

i18n_scope()

Zwraca i18n_scope dla klasa. Zastąp, jeśli chcesz przeprowadzić niestandardowe wyszukiwanie .

... W jaki sposób należy overwtite i18n_scope?

W tym czasie ja otrzymuję następujące "alert":

# Note the 'activemodel' part 
translation missing: de.activemodel.errors.models.my_class.attributes.message.blank 

# I would like to "map" translations to 'de.activerecord.errors.messages.blank' 
# as made for all other ActiveRecord classes in my application 

Moja ActiveModel klasa jest jak następuje:

class MyClass 
    include ActiveModel::Conversion 
    include ActiveModel::Validations 
    include ActiveModel::Dirty 
    extend ActiveModel::Naming 
    extend ActiveModel::Translation 

    validates :name, :presence => true 

    ... 
end 

Odpowiedz

9

To powinno być metodą klasy, przez analogię z AR code:

class MyClass 
    include ActiveModel ... 
    class << self 
    def i18n_scope 
     :activerecord 
    end 
    end 
end 
+0

Idealny! Pracował dla mnie. Tylko dla ciekawości, czy wiesz, w jaki sposób struktura yml dla klasy modelu activemodel? –

1

Muszę przeprosić, jeśli moja odpowiedź jest błędna, ale myślę, że poniższy link może być dla ciebie przydatny. http://api.rubyonrails.org/classes/ActiveModel/Errors.html

To może być jeden może pomóc ->https://github.com/svenfuchs/activemodel-error

Albo być może spróbować w pliku de.yml

de:

activemodel: 

    errors: 

    my_class: 

     attributes: 

     message: 

      blank: "your error description" 

ostatnie rozwiązanie, możesz użyj tego klejnotu -> https://github.com/svenfuchs/rails-i18n automatycznie przetłumaczy nam wiadomości o błędach.