You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在自有Gem中自动加载另一Gem的I18n本地化文件?

自动加载依赖Gem的I18n翻译文件方案

无需复制依赖Gem的本地化文件,通过以下两种方式可实现自动加载:

方法1:在Gem主文件中添加加载路径

在你的Gem核心文件(比如lib/your_gem.rb)中加入代码:

# 替换为实际依赖Gem的名称
dependency_gem_name = "target_dependency_gem"
# 获取依赖Gem的根目录
dependency_root = Gem.loaded_specs[dependency_gem_name].full_gem_path
# 将其本地化文件目录加入I18n加载路径
I18n.load_path += Dir[File.join(dependency_root, "config", "locales", "**", "*.{rb,yml}")]

这段代码会自动扫描依赖Gem的config/locales目录下所有rb/yml格式的翻译文件,纳入I18n的加载范围。

方法2:Rails引擎专属配置(若你的Gem是Rails引擎)

如果你的Gem基于Rails引擎开发,可在引擎初始化流程中配置:

module YourGem
  class Engine < ::Rails::Engine
    initializer "your_gem.load_dependency_translations" do
      dependency_gem_name = "target_dependency_gem"
      dependency_root = Gem.loaded_specs[dependency_gem_name].full_gem_path
      I18n.load_path += Dir[File.join(dependency_root, "config", "locales", "**", "*.{rb,yml}")]
    end
  end
end

这种方式更贴合Rails应用的启动流程,确保翻译文件在应用初始化阶段被正确加载。

注意事项

  • 务必将代码中的target_dependency_gem替换为实际的依赖Gem名称
  • 确认依赖Gem的翻译文件路径为config/locales,若路径不同需对应调整Dir中的路径参数
  • 若依赖Gem本身已配置了I18n加载路径,只需确保你的Gem在加载时正确依赖它即可,无需额外配置

内容的提问来源于stack exchange,提问作者Colibri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 13:17:01