Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

App cannot access translation files in engine or gem

I tried every combination I can think of but I cannot get my app to see the localized content provided by my engine. Now the engine does just fine.

I see the same problem with Rails_admin. Where it's i18n files are in a separate gem. The main app cannot seem to see the files. I'm sure there must be an error in how I'm specifying the I18n.load_path, but it's got me beat.

from Ryan Bates rails cast:

I18n.load_path += Dir[Rails.root.join('config', 'locale', '*.{rb,yml}')]

And one of my hack attempts:

I18n.load_path += Dir[Rails.root.join('**','locales', '**', '*.{rb,yml}')]

And any reference from inside the app results in a translation not found.

Any clues.

like image 370
bobbdelsol Avatar asked Jun 02 '14 02:06

bobbdelsol


1 Answers

I was facing same issue , If your developing rails engine then add following lines to lib/engine_name/engine.rb

module MyEngine
  class MyEngine < Rails::Engine
    config.before_initialize do                                                      
      config.i18n.load_path += Dir["#{config.root}/config/locales/**/*.yml"]
    end
  end
end

Another way

module MyEngine
  class MyEngine < Rails::Engine
    initializer 'MyEngine', before: :load_config_initializers do
      Rails.application.config.i18n.load_path += Dir["#{config.root}/config/locales/**/*.yml"]        
    end
  end
end
like image 130
Deepak Kabbur Avatar answered Nov 07 '22 09:11

Deepak Kabbur