在Rails中仅禁用translation_missing为英语

时间:2012-09-24 04:05:53

标签: ruby-on-rails localization internationalization translation

如果语言是英语,有没有办法阻止.translation_missing课程出现在视图中?由于英文文本是正确的,我不需要翻译它。

现在我添加了样式来屏蔽span.translation_missing,如果语言环境是默认范围,但是如果语言环境是:en

我宁愿让它不显示

更新:为了清楚起见,我在.erb个文件中进行了翻译,所以说<%= t "Menu item" %>变为<span class="translation_missing">Menu item<span>,这是过度的。我只需要将:en locale

单独保留原始字符串

1 个答案:

答案 0 :(得分:2)

我认为通过标准方法无法实现此目的,但您可以添加如下补丁:

module I18n::MissingTranslation::Base

  def html_message_with_en_fix
    (locale == :en) ? key : html_message_without_en_fix
  end
  alias_method_chain :html_message, :en_fix

  def message_with_en_fix
    (locale == :en) ? key : message_without_en_fix
  end
  alias_method_chain :message, :en_fix

end

或者,如果您不想使用补丁,您也可以定义自己的方法并自己捕获异常:

def my_translate(key)
  begin
    I18n.t(key, :raise => I18n::MissingTranslationData)
  rescue I18n::MissingTranslationData
    (I18n.locale == :en) ? key.to_s : I18n.t(key)
  end
end

另见this answer

(我已经更新了两个答案以返回翻译字符串而不是感谢空白/无。)