Ho un PetsController in cui è stato impostato un messaggio flash. Qualcosa di simile a questo:Come utilizzare I18n dal controller in Rails
class PetsController
...
def treat_dog
#do somthing
flash[:success] = 'Your dog is being treated.'
end
...
end
questo controller appartiene a Admin, in modo che si trova all'indirizzo: app/controllers/admin/pets_controller.rb
. Userò I18n, così ho sostituito la stringa nel controller con t('controllers.admin.pet.treated')
, allora, ho scritto questo yml:
en:
controllers:
admin:
pet:
treated: "Your dog is being treated."
situato a: config/locales/controllers/admin/pet/en.yml
e non ha funzionato. Ho tentato di localizzarlo a config/locales/controllers/admin/pets/en.yml
, config/locales/controllers/admin/en.yml
config/locales/controllers/en.yml
e nessuno di questi ha funzionato, la traduzione non è stata trovata.
Come posso utilizzare una traduzione da questo controller?
Sì, ho trovato che per convenzione, in controllori di traduzione I18n deve essere usato con I18n.t 'key' invece di t ('key') ma anche quest'ultimo deve funzionare. Nel mio caso, lo scambio funziona per me. Grazie Mahesh. –
Come spiegato nelle guide http://guides.rubyonrails.org/i18n.html#lazy-lookup potresti probabilmente semplificarlo con ricerche pigre usando l'helper come questo 't ('. Treated')' – dft