所以我知道如果在阅读yaml文件时“翻译缺失:”,如何返回默认值。
some = I18n.t("something.something_else", default: "value")
但是如果我希望默认值为nil,我该怎么用Ruby方式呢?我知道我可以正则表达式匹配变量中的“翻译缺失:”,如果匹配,我会将它分配给nil。但我想做的是
some = I18n.t("something.something_else", default: nil)
但它只是让我失去了翻译。有谁知道一个好方法?
答案 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")