Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在视图中启用Rails I18n转换错误?_Ruby On Rails_Internationalization_Translation - Fatal编程技术网

Ruby on rails 如何在视图中启用Rails I18n转换错误?

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 我创建此初始值设定项是

我创建了新的Rails3项目。我尝试在我的观点中使用如下翻译:

= 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?