I18n.t翻译缺少默认值无

时间:2015-12-30 20:21:32

标签: ruby ruby-on-rails-3 yaml rails-i18n

所以我知道如果在阅读yaml文件时“翻译缺失:”,如何返回默认值。

some = I18n.t("something.something_else", default: "value")

但是如果我希望默认值为nil,我该怎么用Ruby方式呢?我知道我可以正则表达式匹配变量中的“翻译缺失:”,如果匹配,我会将它分配给nil。但我想做的是

some = I18n.t("something.something_else", default: nil)

但它只是让我失去了翻译。有谁知道一个好方法?

2 个答案:

答案 0 :(得分:10)

:default不能为零。将值设置为nil等同于根本不设置该选项。

但是,由于gem似乎only check whether the key is nil or not,您可以尝试将空字符串作为默认值传递。如果缺少翻译,translate方法可能会返回一个空字符串。

some = I18n.t("something.something_else", default: "")

我相信这是您可以获得的更接近的解决方案,除非您定义内部查找密钥存在的自定义translate方法,如果密钥不存在则返回nil。

答案 1 :(得分:3)

试试这个some = I18n.t!("something.something_else") rescue nil

好的,执行rescue nil是一种不好的做法,但它很简短可爱:)

你可以做这样的事情

def translate(key)
  I18n.t!(key)
rescue I18n::MissingTranslationData
  nil
end

则...

some = translate("something.something_else")

相关问题