Rails 4引擎自动加载引擎的i18n语言环境文件?
我得到了一个关于Rails引擎的问题,Rails引擎没有提到Rails引擎。我希望在这里得到它。Rails 4引擎自动加载引擎的i18n语言环境文件?
我得到了一个引擎,例如名为my_engine和一个名为my_app的应用程序。
用于开发目的,在my_app的Gemfile中,我只是简单地将my_engine包含在下面的行中,使用:file key。
#my_app/Gemfile
...
gem "my_engine", :path => "./../my_engine"
...
和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
而且我发现,虽然我试图检查下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 }
难道我错过了一些配置或者有关my_engine装载区域设置一些重要的步骤是什么?
在应用程序控制器中声明的所有方法都可以从任何位置看到。表明应用程序的语言应被加载代码:
# 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
希望这有助于你兰迪沼泽
答案可能并不清楚,因为它只提供源代码。你能编辑你的文章并添加更多解释吗?谢谢。 –
我使用
Rails 4.1.6
,我安装我的引擎像这里面的Gemfile
gem 'core', path: "core"
当我检查我的负载路径
I18n.load_path.find_all { |p| p.match("core") }.each { |p| puts p }
我看到我的引擎收录的语言环境
/absolute_path/core/config/locales/de.yml
/absolute_path/core/config/locales/en.yml
以便默认轨道正在加载您的引擎区域
它也在文档中提到
http://edgeapi.rubyonrails.org/classes/Rails/Engine.html
然后确保该文件在你的config/application.rb中的顶部加载(或在你的Gemfile),它会在自动加载模式,控制器和内部应用助手,负载路线config/routes.rb,在config/locales/加载语言环境,并在lib/tasks/加载任务。
其实我看了这个之后,我不明白你在说什么,你的意思是rails不加载引擎的locale文件或者? –