ruby - I18n.t 翻译缺少默认值 Nil

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

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

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

但是如果我希望默认值为 nil,我该如何以 Ruby 的方式做到这一点呢?我知道我可以正则表达式并匹配变量 some 中的“translation missing:”,如果它匹配,我会将它分配给 nil。但我想做的是拥有

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

但它只是返回了我缺少的翻译。有谁知道好的方法吗?

最佳答案

:default 不能为 nil。将值设置为 nil 相当于根本不设置该选项。

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

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

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

关于ruby - I18n.t 翻译缺少默认值 Nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34536692/

相关文章:

ruby-on-rails - 大量分配object_id给对象

ruby-on-rails-3 - 任何人在 OSX lion 中安装 bson_ext gem 时遇到问题

mysql - 无法通过套接字 '/tmp/mysql.sock' 连接到本地 MySQL 服务器

opencv - OpenCV 中使用的 Yaml 文件格式

python - 如何打印出来!在皮亚姆尔?

ruby - 动态创建类,具有继承和特定访问器

ruby-on-rails - RSpec - 无法获取 Controller 中的所有关联属性

ruby - 将 2 维哈希转换为 1 维哈希

ruby-on-rails - 有没有办法在辅助方法中缓存字符串片段?

unit-testing - 使用 Rails 固定装置进行单元测试