如何确定Rails(包括gems)加载了哪些语言环境文件?

时间:2018-10-05 19:24:36

标签: ruby-on-rails ruby i18n-gem

我正在向我的应用程序引入新的语言环境,并将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后端,以某种方式存储每个键的加载位置。

1 个答案:

答案 0 :(得分:2)

表述问题之后,很清楚我需要搜索的内容是:“ rails i18n加载路径”。

使用:

Rails.configuration.i18n.load_path.select { |path| path.match('bundle/gems') }

我接近需要的东西。仍然不是有关实际加载的文件或包含感兴趣区域的翻译的列表,而是至少i18n所考虑的所有gem的列表。