【问题标题】:App cannot access translation files in engine or gem应用程序无法访问引擎或 gem 中的翻译文件
【发布时间】:2014-06-02 02:20:01
【问题描述】:

我尝试了所有我能想到的组合,但我无法让我的应用看到我的引擎提供的本地化内容。现在发动机运转良好。

我发现Rails_admin 存在同样的问题。 i18n 文件位于单独的 gem 中。主应用程序似乎看不到文件。我确定我指定I18n.load_path 的方式一定有错误,但这让我很受挫。

来自瑞恩·贝茨 (Ryan Bates) 的演员:

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

我的黑客尝试之一:

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

并且来自应用程序内部的任何引用都会导致找不到翻译。

任何线索。

【问题讨论】:

  • 引擎生成的语言环境文件在哪里。
  • 它们位于 config/locales 中。我已将它们复制到 lib/locales 和 root/locales 无济于事。
  • 请将它们添加到问题中,以便其他人可以提供帮助
  • 这似乎是本地开发环境的问题。部署应用程序后,它就可以工作了。不知道为什么
  • @bobbdelsol 你能为开发解决它吗?我有同样的问题,它仍然只适用于生产环境。

标签: ruby-on-rails rails-i18n


【解决方案1】:

我遇到了同样的问题,如果您正在开发 rails 引擎,那么将以下行添加到 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

另一种方式

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

【讨论】:

    猜你喜欢
    • 2013-10-27
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2012-06-23
    • 1970-01-01
    相关资源
    最近更新 更多