2010-11-19 3 views
3

J'ai écrit un validates_word_count plugin. Je voudrais stocker les messages d'erreur dans un fichier YAML afin qu'ils puissent être facilement traduits.Comment internationaliser/localiser mon module de rails?

modèle de fichier de mon plugin ressemble à ceci:

validates_word_count/ 
    init.rb 
    lib/ 
    validates_word_count.rb 
    locale/ 
     en.yml 

Mon fichier YAML ressemble à ceci:

en: 
    validates_word_count: 
    errors: 
     messages: 
     too_few_words: "has too few words (minimum is %d words)" 
     too_many_words: "has too many words (maximum is %d words)" 

Cependant, si je l'appelle I18n.translate('validates_word_count.errors.messages.too_few_words'), je reçois cette erreur:

translation missing: en, validates_word_count, errors, messages, too_few_words 

Comment puis-je configurer mon plugin/paramètres régionaux pour que I18n.translate() fonctionne?

Répondre

3

Il y a deux parties à la réponse.
1. Utilisez la disposition du répertoire standard:

validates_word_count/ 
init.rb 
    lib/ 
    validates_word_count.rb 
    config/ 
    locales/ 
     en.yml 


2. Dans init.rb, ajoutez les lignes suivantes:

Dir[File.join("#{File.dirname(__FILE__)}/config/locales/*.yml")].each do |locale| 
I18n.load_path.unshift(locale) 
end 
+0

Savez-vous comment faire cela dans Rails 4? Il semble que init.rb ne soit plus utilisé. – nullnullnull

+2

Les plugins Rails ne sont plus supportés. Vous devez faire une gemme. –

+0

Bon à savoir. Merci! – nullnullnull

Questions connexes