Ruby on rails 3.2 App&x27;s区域设置文件影响引擎';s区域设置文件。它强制在托管应用程序中具有相同的文件。如何修复它?
我在使用引擎的应用程序中体验到奇怪的行为。应用程序的语言环境转换文件会影响引擎的语言环境转换文件 要使引擎的文件正常工作,我必须在应用程序中显式创建相同的文件。只需将它们命名为相同的名称,在其中放入一个空的区域设置哈希就足够了 这是我的引擎的区域设置目录。我有带翻译的Ruby on rails 3.2 App&x27;s区域设置文件影响引擎';s区域设置文件。它强制在托管应用程序中具有相同的文件。如何修复它?,ruby-on-rails-3.2,rails-engines,Ruby On Rails 3.2,Rails Engines,我在使用引擎的应用程序中体验到奇怪的行为。应用程序的语言环境转换文件会影响引擎的语言环境转换文件 要使引擎的文件正常工作,我必须在应用程序中显式创建相同的文件。只需将它们命名为相同的名称,在其中放入一个空的区域设置哈希就足够了 这是我的引擎的区域设置目录。我有带翻译的.rb文件(不是.yml): 我将我的引擎视图称为翻译: <%= t("foo.bar") %> 如何修复此行为?我不想在托管应用程序中显式创建相同的文件。我只想让它空着,只有引擎有自己的翻译。因为这会给发动机用户带来
.rb
文件(不是.yml
):
我将我的引擎视图称为翻译:
<%= t("foo.bar") %>
如何修复此行为?我不想在托管应用程序中显式创建相同的文件。我只想让它空着,只有引擎有自己的翻译。因为这会给发动机用户带来额外的不便 所以我找到了问题所在 我的引擎的
engine.rb
文件我有这样一个初始化代码。问题在于config
的接收器。由于我向块提供了一个app
实例,config
的接收器是app
。这就造成了问题:
initializer(“my_engine.locales”)do | app|
tracking_logger=logger.new(app.root.join('log',“my_engine_log.log”),10,30*1024*1024)
config.i18n.load_path+=Dir[root.join('my','locales','*.{rb,yml}')。to_s]
config.i18n.default_locale=:ru
config.i18n.fallbacks=[:en]
tracking_logger.debug“已设置MyEngine::引擎特定的区域设置。Def区域设置==:ru\n\n”
结束
因此,我将接收器更改为MyEngine,现在一切正常:
initializer(“my_engine.locales”)do | app|
tracking_logger=logger.new(app.root.join('log',“my_engine_log.log”),10,30*1024*1024)
MyEngine::Engine.config.i18n.load_path+=Dir[root.join('my','locales','*.{rb,yml}')。to_s]
MyEngine::Engine.config.i18n.default_locale=:ru
MyEngine::Engine.config.i18n.fallbacks=[:en]
tracking_logger.debug“已设置MyEngine::引擎特定的区域设置。Def区域设置==:ru\n\n”
结束
<%= t("foo.bar") %>
# app's translation files. ru.rb is the same.
# en.rb
{
:en => {
# even no content may be at all but an :en key has to be present
},
},
}