Rails 4引擎自动加载引擎的i18n语言环境文件?

Sim*_*ong 7 ruby rails-engines ruby-on-rails-4

我有一个关于Rails引擎的问题,在Rails指南中没有提到Rails引擎.我希望能在这里得到它.

我有一个引擎,例如,名为my_engine,还有一个名为my_app的应用程序.

出于开发目的,在my_app的Gemfile中,我只是简单地将my_engine包含在以下行中,使用:file key.

#my_app/Gemfile
...
gem "my_engine", :path => "./../my_engine"
...
Run Code Online (Sandbox Code Playgroud)

和my_engine结构是这样的:

.
??? Gemfile
??? Gemfile.lock
??? app
?   ??? ...
|   |...
|
??? config
?   ??? locales
?   ?   ??? models
?   ?       ??? products
?   ?           ??? en.yml
?   ?           ??? zh-TW.yml
?   ??? routes.rb
??? lib
?   ??? my_engine
?   ?   ??? engine.rb
?   ?   ??? version.rb
?   ??? my_engine.rb
?   ??? tasks
?       ??? my_engine_tasks.rake
Run Code Online (Sandbox Code Playgroud)

我发现当我尝试检查my_app下的I18n.load_path时,没有任何单个路径指向my_engine,这意味着,my_app不会加载my_engine的语言环境事务.

>>rails console
Loading development environment (Rails 4.0.2)
2.1.0 :001 >I18n.load_path.each { |x| puts x }
Run Code Online (Sandbox Code Playgroud)

是否我错过了一些关于在my_engine中加载语言环境的配置或一些重要步骤?

Mik*_*ele -1

在应用程序控制器中声明的所有方法都可以从任何位置看到。指示应用程序应使用代码加载哪种语言:

# on my_app/app/controller/application_controller.rb
class ApplicationController < ActionController::Base

before_filter :set_locale

def set_locale
   I18n.locale = request.headers['HTTP_ACCEPT_LANGUAGE'].split(',')[0].split('-')[0]
end
Run Code Online (Sandbox Code Playgroud)

希望这对您有帮助 兰迪·马什