Rails I18n缺失翻译键时显示转换文本而非报错,如何触发报错?
问题
现有翻译配置如下:
en: welcomes: index: welcome: Hello World!
使用Rails I18n的懒加载方式调用<%= t('.welcome') %>可以正常显示Hello World!。但在welcomes/index.html.erb中调用<%= t('.welcome_abc') %>时,预期会出现「translation missing」相关提示,实际却显示「Welcome Abc」。翻遍Rails I18n官方文档也没找到相关设置,请问如何触发「translation missing」的错误提示?
解决方案
这个翻译键确实是缺失的。根据ActionView的TranslationHelper机制,当遇到MissingTranslation异常时,默认行为是渲染一个内联<span>标签:该标签的title属性值为完整的缺失翻译键,而页面上显示的文本则是将键名转换为自然语言格式的结果(比如welcome_abc会被自动转换为Welcome Abc)。
如果想要明确触发「translation missing」的错误提示,可以通过两种方式设置:
- 全局配置(开发环境推荐):在
config/environments/development.rb中添加如下配置:
开启后,开发环境中遇到缺失的翻译键时会直接抛出异常,便于快速定位问题。config.i18n.raise_on_missing_translations = true - 单次调用配置:在调用
t方法时传入raise: true参数:
该设置仅对当前<%= t('.welcome_abc', raise: true) %>t方法调用生效,触发缺失翻译的异常。
内容的提问来源于stack exchange,提问作者HJW
相关产品推荐
相关产品推荐

