I18n.t 翻译缺少默认值 Nil
I18n.t Translation Missing Default Value Nil
所以我知道如何 return 如果我在读取 yaml 文件时得到 "translation missing:" 默认值。
some = I18n.t("something.something_else", default: "value")
但是如果我希望默认值为 nil,我该如何以 Ruby 的方式做到这一点?我知道我可以正则表达式并匹配变量 some 中的 "translation missing:",如果它匹配,我会将它分配给 nil。但我想做的是
some = I18n.t("something.something_else", default: nil)
但我只是缺少 returned 翻译。有谁知道好方法吗?
试试这个 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")
:default
不能为零。将值设置为 nil
相当于根本不设置该选项。
但是,由于 gem 似乎 only check whether the key is nil or not,您可以尝试传递一个空字符串作为默认值。如果缺少翻译,translate
方法可能会 return 一个空字符串。
some = I18n.t("something.something_else", default: "")
我相信这是您可以获得的更接近的解决方案,除非您定义自定义 translate
方法,该方法在内部查找密钥是否存在,如果密钥不存在,则 returns nil .
所以我知道如何 return 如果我在读取 yaml 文件时得到 "translation missing:" 默认值。
some = I18n.t("something.something_else", default: "value")
但是如果我希望默认值为 nil,我该如何以 Ruby 的方式做到这一点?我知道我可以正则表达式并匹配变量 some 中的 "translation missing:",如果它匹配,我会将它分配给 nil。但我想做的是
some = I18n.t("something.something_else", default: nil)
但我只是缺少 returned 翻译。有谁知道好方法吗?
试试这个 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")
:default
不能为零。将值设置为 nil
相当于根本不设置该选项。
但是,由于 gem 似乎 only check whether the key is nil or not,您可以尝试传递一个空字符串作为默认值。如果缺少翻译,translate
方法可能会 return 一个空字符串。
some = I18n.t("something.something_else", default: "")
我相信这是您可以获得的更接近的解决方案,除非您定义自定义 translate
方法,该方法在内部查找密钥是否存在,如果密钥不存在,则 returns nil .