我怎样才能找出 rails (包括宝石)加载的语言环境文件?
How can I find out what locale-files are loaded by rails (including gems)?
我正在为我的应用程序引入新的语言环境,并将 config/locales/.locale1.yml 中的所有现有文件复制到 config/locales/ .locale2.yml.
起初我希望 I18n.backend.send(:translations)['locale1']
等于 I18n.backend.send(:translations)['locale2']
,但是当我比较两个哈希值时,我意识到我的新 'locale2' 缺少一堆翻译。
我认为对于 locale1,已经从 gem 加载了额外的翻译,例如流行的 rails-i18n gem.
由于没有(简单的)方法来找出在哪个 .yml 文件中定义了翻译,我想获取从任何 gem 加载的所有语言环境文件的列表。
有什么关于如何获取该信息的建议吗?
更有趣的是,如果我真的可以实现一种方法来确定从哪个文件加载了翻译,但我想这需要编写一个自定义的 i18n 后端,以某种方式存储每个键的加载位置。
问题的措辞后,我需要搜索的内容变得很清楚:'rails i18n load paths'。
通过使用:
Rails.configuration.i18n.load_path.select { |path| path.match('bundle/gems') }
我接近我需要的东西。仍然不是实际加载的文件或包含感兴趣语言环境的翻译的列表,但至少是 i18n 考虑的所有 gem 的列表。
我正在为我的应用程序引入新的语言环境,并将 config/locales/.locale1.yml 中的所有现有文件复制到 config/locales/ .locale2.yml.
起初我希望 I18n.backend.send(:translations)['locale1']
等于 I18n.backend.send(:translations)['locale2']
,但是当我比较两个哈希值时,我意识到我的新 'locale2' 缺少一堆翻译。
我认为对于 locale1,已经从 gem 加载了额外的翻译,例如流行的 rails-i18n gem.
由于没有(简单的)方法来找出在哪个 .yml 文件中定义了翻译,我想获取从任何 gem 加载的所有语言环境文件的列表。
有什么关于如何获取该信息的建议吗?
更有趣的是,如果我真的可以实现一种方法来确定从哪个文件加载了翻译,但我想这需要编写一个自定义的 i18n 后端,以某种方式存储每个键的加载位置。
问题的措辞后,我需要搜索的内容变得很清楚:'rails i18n load paths'。
通过使用:
Rails.configuration.i18n.load_path.select { |path| path.match('bundle/gems') }
我接近我需要的东西。仍然不是实际加载的文件或包含感兴趣语言环境的翻译的列表,但至少是 i18n 考虑的所有 gem 的列表。