2

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

现在,span.translation_missing如果语言环境是默认跨度,我添加了样式来掩盖,但如果语言环境是,我宁愿它根本不出现:en

更新:为了清楚起见,我在.erb文件中进行翻译,所以说<%= t "Menu item" %>变得<span class="translation_missing">Menu item<span>有点矫枉过正。我只需要它为:en语言环境保留原始字符串

4

1 回答 1

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

另请参阅此答案

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

于 2012-09-24T04:43:19.247 回答