【问题标题】:Rails console not loading all the localesRails 控制台未加载所有语言环境
【发布时间】:2025-11-28 17:05:02
【问题描述】:

我有一个项目,其中包含大量的语言环境文件,根据它们对应的模型组织在子目录中。

为了让 Rails 加载所有这些,我在 config/application.yml 中设置了这个选项:

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

现在,执行 rails 控制台并编写需要添加的最后一个语言环境文件 (config/locale/email/en.yml) 的内容,我得到了:

Loading development environment (Rails 4.1.6)
2.1.3 :001 > I18n.t("email.footer_text")  
  => "translation missing: en.email.footer_text" 
2.1.3 :002 > translations = I18n.backend.send(:translations);
2.1.3 :003 > translations[:en][:email]  
  => nil

但是,如果我从控制器执行此操作(在 putscommand 的帮助下),它会很好地打印语言环境字符串。

PD:在控制台中,它会加载所有其余的语言环境,最后添加的除外。我试图删除一个旧的,控制台(重新启动后)给我一个错误,因为我删除的语言环境不存在。

有什么我应该清理的缓存吗?

如果我在删除文件后重新启动控制台,为什么控制台会记住曾经存在的已删除文件?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 translation


    【解决方案1】:

    您应该首先在 Rails 控制台中手动加载您的语言环境:

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

    【讨论】: