Ruby on rails 如何在视图中启用Rails I18n转换错误?
我创建了新的Rails3项目。我尝试在我的观点中使用如下翻译:Ruby on rails 如何在视图中启用Rails I18n转换错误?,ruby-on-rails,internationalization,translation,Ruby On Rails,Internationalization,Translation,我创建了新的Rails3项目。我尝试在我的观点中使用如下翻译: = t('.translate_test') 在我的浏览器中,我查看“翻译测试”,而不是“我的测试翻译”我在en.yml中设置的 我的主要问题-为什么我看不到Rails 3中出现的错误,如“缺少翻译:en…”?,它们不再显示此文本。如果检查html源代码中的元素,您将看到缺少翻译的消息 您可以关闭回退,尝试在您的环境或初始值设定项中添加以下内容: config.i18n.fallbacks = false 我创建此初始值设定项是
= t('.translate_test')
在我的浏览器中,我查看“翻译测试”
,而不是“我的测试翻译”
我在en.yml中设置的
我的主要问题-为什么我看不到Rails 3中出现的错误,如
“缺少翻译:en…”
?,它们不再显示此文本。如果检查html源代码中的元素,您将看到缺少翻译的消息
您可以关闭回退,尝试在您的环境或初始值设定项中添加以下内容:
config.i18n.fallbacks = false
我创建此初始值设定项是为了
raise
异常-传递参数,以便您知道缺少哪个i18n密钥
#仅用于开发和测试
如果Rails.env.development?|Rails.env.test?
#存在错误/无i18n密钥时引发异常
模块I18n
类JustRaiseExceptionHandler
我使用最简单的视图特定解决方案,通过在application.css.scss或任何全局样式表中添加此样式,在缺少翻译时显示视图中的错误:
.translation_missing{
font-size: 30px;
color: red;
font-family: Times;
&:before{
content: "Translation Missing :: ";
font-size: 30px;
font-family: Times;
color: red;
}
}
在application.rb中添加monkeypatch,以便在缺少翻译时引发异常:
module ActionView::Helpers::TranslationHelper
def t_with_raise(*args)
value = t_without_raise(*args)
if value.to_s.match(/title="translation missing: (.+)"/)
raise "Translation missing: #{$1}"
else
value
end
end
alias_method :translate_with_raise, :t_with_raise
alias_method_chain :t, :raise
alias_method_chain :translate, :raise
end
非常感谢,有了这个系统,运行测试时很容易检查所有缺失的翻译。。当然,如果你有一个好的coverture。@NadavB在Rails 3上工作,请参阅最新指南:可能重复的Nice和practical。上述其他方法在Rails 4.x中不适用。我创建了一个
debug.css
并有条件地将其包含在我的模板中:=stylesheet\u link\u标记“debug”,除非Rails.env.production?