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
    },
  },
}