Ruby on rails 禁用Rails中仅缺少英语的翻译
如果语言为英语,是否有方法防止视图中出现Ruby on rails 禁用Rails中仅缺少英语的翻译,ruby-on-rails,localization,internationalization,translation,Ruby On Rails,Localization,Internationalization,Translation,如果语言为英语,是否有方法防止视图中出现.translation\u missing类?既然英文本是正确的,我就不需要翻译了 现在,我为maskspan.translation\u missing添加了样式,如果区域设置是默认的span,我希望它根本不出现,如果区域设置是:en 更新:为了清楚起见,我在.erb文件中进行翻译,所以说变成了菜单项,这太过分了。我只需要将原始字符串保留在:enlocale中,我认为没有办法通过标准方法实现这一点,但您可以添加如下修补程序: module I18n::
.translation\u missing
类?既然英文本是正确的,我就不需要翻译了
现在,我为maskspan.translation\u missing
添加了样式,如果区域设置是默认的span,我希望它根本不出现,如果区域设置是:en
更新:为了清楚起见,我在
.erb
文件中进行翻译,所以说
变成了菜单项
,这太过分了。我只需要将原始字符串保留在:en
locale中,我认为没有办法通过标准方法实现这一点,但您可以添加如下修补程序:
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
另见
(我已经更新了两个答案,以返回翻译字符串,而不是blank/nil。)不幸地产生了
ActionView::Template::Error(未定义的方法
html\u safe'for nil:NilClass)`生产中的错误。我希望有一种无需修补的方法。更新了我的答案,使其返回空字符串,而不是nil
。我同意补丁不是最优雅的方法,但它应该是有效的。添加了一种不需要补丁的替代方法。另请参阅此答案:如果确实缺少翻译,则更新(1)重新运行空字符串,但这样,英文版本中的所有文本都将消失。因此,如果您在英语区域设置中,您只想显示密钥?那不是很清楚。无论如何,我更新了我的答案。