在Rails文档中,I18N字符串似乎有不同的默认位置,具体取决于I18N查找是从视图,模型/验证,控制器,帮助程序,...,如果它是标签等启动的。
如何在默认情况下查看Rails尝试查找内容的位置,例如当我只使用t('。something')?
答案 0 :(得分:7)
您可以在开发模式下修补I18N后端,以打印出在后端查找的I18n键。
点击此处:
http://www.unixgods.org/Rails/where_is_Rails_trying_to_lookup_L10N_strings.html
答案 1 :(得分:3)
独立I18n.t
不会以任何方式为您的翻译密钥添加前缀,以下是负责rails魔术的帮助方法/模块:
(点击方法说明下面的“来源”链接,看看里面发生了什么)
<强>的ActionView:强>
http://api.rubyonrails.org/classes/ActionView/Helpers/TranslationHelper.html#method-i-t
<强>加载ActiveModel:强>
http://api.rubyonrails.org/classes/ActiveModel/Translation.html#method-i-i18n_scope
<强>一个AbstractController 强>
http://api.rubyonrails.org/classes/AbstractController/Translation.html
答案 2 :(得分:1)
上面的解决方案无法帮助找到正在查找密钥的文件。我没有找到任何优雅的解决方案,下面是我提出的最佳方法。这些说明必须适用于生产箱。
bundle exec rails c
I18n.load_path.join("\n")
并将其复制到剪贴板。如果您对some clipboard helpers使用pry,只需在控制台中运行copy
pbpaste | ack 'en.yml$' | xargs ack 'key:'
这将打印出包含I18n正在尝试访问的密钥的文件列表答案 3 :(得分:0)
在rails 3.2(也许是较低版本)中,t - helper在视图中生成一个span,显示搜索了哪个键进行了翻译。对于所有情况(来自控制器等),这不是解决方案,但我认为这可能是许多搜索此问题的人的答案,其中上面的完整猴子补丁将超过顶部(猴子补丁也适用于我在i18n 0.7.0并提供更多细节)
title="translation missing: de.<path to key>"