2011-10-07 13 views
25

Po przesłaniu formularza z błędem w nim zwraca komunikat o błędzie. Jak mogę przetłumaczyć te komunikaty o błędach za pomocą i18n? Mam już tłumaczenie wszystkich innych tekstów w moich poglądach, więc wiem, jak działa l18n w Railsach. Teraz otrzymuję:Jak tłumaczyć weryfikację modelu aktywnego rekordu

2 errors prohibited this user from being saved: 

Email translation missing: nl.activerecord.errors.models.user.attributes.email.blank 
Email translation missing: nl.activerecord.errors.models.user.attributes.email.blank 

Chcę przetłumaczyć zarówno tytuł, jak i błędy.

Odpowiedz

32

tłumaczenie tytułu byłoby :

nl: 
    activerecord: 
    errors: 
     template: 
     header: 
      one: "1 error prohibited this %{model} from being saved" 
      other: "%{count} errors prohibited this %{model} from being saved" 
     body: "There were problems with the following fields:" 

Do tłumaczenia komunikatów o błędach, Rails u se następujący porządek tłumaczeń:

activerecord.errors.models.user.attributes.name.blank 
activerecord.errors.models.user.blank 
activerecord.errors.messages.blank 
errors.attributes.name.blank 
errors.messages.blank 

Więc można dodać:

nl: 
    activerecord: 
    errors: 
     models: 
     user: 
      attributes: 
      email: 
       blank: "foo blank in nl bar baz" 

Jest udokumentowane w Rails Internationalization (I18n) API Guide, co może dać trochę więcej wgląd.

+0

Prawidłowo, naprawdę tego nie zauważyłem. Usuwam część admin w celu wyjaśnienia. Dzięki! – tbuehlmann

10

The rails I18n guide obejmuje to całkiem dobrze.

można umieścić następujące w config/locales/nl.yml przełożyć atrybuty:

nl: 
    activerecord: 
    models: 
     user: "User" 
    attributes: 
     email: "Email" 

dla komunikatów o błędach, ActiveRecord będzie wyglądać ich w następujących nazw:

activerecord.errors.models.[model_name].attributes.[attribute_name] 
activerecord.errors.models.[model_name] 
activerecord.errors.messages 
errors.attributes.[attribute_name] 
errors.messages 

model, attribute i value są interpolowane i dostępne w tłumaczeniach, na przykład:

nl: 
    errors: 
    messages: 
     blank: "Please fill the %{model}'s %{attribute}" 
20

Po prostu użyj holenderskiego pliku tłumaczeń, który możesz find here. Zawiera tłumaczenia dla większości (jeśli nie wszystkich) komunikatów walidacji ActiveRecord.

Skopiuj plik do config/locales/ w swoim projekcie.

metoda alternatywna

Jeśli chcesz korzystać z uaktualnionych tłumaczeń, dodać następujące wpisy do Gemfile zamiast kopiowania plików słowniki ręcznie:

gem 'rails-i18n' 
+1

Zwykle robię pierwszą rzecz podczas tworzenia nowej aplikacji szyny, czy wiesz, czy jest sposób, aby zrobić to automatycznie? –

+0

Nie mam pojęcia, naprawdę! Rozpocznij nowe pytanie na ten temat;) – rdvdijk

+0

Ta wtyczka wygląda całkiem ładnie: https://github.com/zargony/rails-i18n-updater, ale nie przetestowałem tego. –

Powiązane problemy