Jef*_*eff 6 ruby yaml ruby-on-rails-3 rails-i18n
所以我知道如果在阅读yaml文件时"翻译缺失:",如何返回默认值.
some = I18n.t("something.something_else", default: "value")
Run Code Online (Sandbox Code Playgroud)
但是,如果我希望默认值为nil,我该如何以Ruby方式执行此操作?我知道我可以正则表达式匹配变量中的"翻译缺失:",如果匹配,我会将它分配给nil.但我想做的就是拥有
some = I18n.t("something.something_else", default: nil)
Run Code Online (Sandbox Code Playgroud)
但它只是让我失去了翻译.有谁知道一个好方法?
Sim*_*tti 12
:default
不能为零.将值设置nil
为等于根本不设置选项.
但是,由于gem似乎只检查密钥是否为nil,因此您可以尝试将空字符串作为默认值传递.如果translate
缺少翻译,该方法可能会返回一个空字符串.
some = I18n.t("something.something_else", default: "")
Run Code Online (Sandbox Code Playgroud)
我相信这是您可以获得的更接近的解决方案,除非您定义translate
内部查找密钥存在的自定义方法,如果密钥不存在则返回nil.
尝试这个 some = I18n.t!("something.something_else") rescue nil
好吧,执行 a rescue nil
but是一种不好的做法,它又短又可爱:)
你可以做这样的事情
def translate(key)
I18n.t!(key)
rescue I18n::MissingTranslationData
nil
end
Run Code Online (Sandbox Code Playgroud)
然后...
some = translate("something.something_else")
归档时间: |
|
查看次数: |
3726 次 |
最近记录: |