我正在向我的应用程序引入新的语言环境,并将config / locales / .locale1.yml中的所有现有文件复制到config / locales / .locale2.yml。
起初,我期望I18n.backend.send(:translations)['locale1']
等于I18n.backend.send(:translations)['locale2']
,但是当我比较两个散列时,我意识到我新的新“ locale2”缺少大量翻译。
我认为,对于locale1,还从宝石中加载了其他翻译,例如流行的rails-i18n宝石。
由于没有(简便)的方法来找出在哪个.yml文件中定义了翻译,因此我想获取从任何gem加载的所有语言环境文件的列表。
关于如何获取该信息的任何建议?
更有趣的是,如果我实际上可以实现一种方法来找出从哪个文件中加载了翻译,但是我想那将需要编写一个自定义的i18n后端,以某种方式存储每个键的加载位置。
答案 0 :(得分:2)
表述问题之后,很清楚我需要搜索的内容是:“ rails i18n加载路径”。
使用:
Rails.configuration.i18n.load_path.select { |path| path.match('bundle/gems') }
我接近需要的东西。仍然不是有关实际加载的文件或包含感兴趣区域的翻译的列表,而是至少i18n所考虑的所有gem的列表。