如何阻止Rails全球化仅在一个字段上回退到后备区域设置?

时间:2019-07-19 21:03:31

标签: ruby-on-rails ruby globalize

我们使用globalize gem,并且在Rails.application.config.i18n.fallbacks = [:en]中加入了config/initializers/i18n.rb,以便用户以自己的语言不存在该字段时看到该字段的英文翻译。

这意味着我们看到了预期的这种行为:

class Post < ActiveRecord::Base
  translates :title, :name
end

puts post.translations.inspect
# => [#<Post::Translation id: 1, post_id: 1, locale: "en", title: "Globalize rocks!", name: "Globalize">,
      #<Post::Translation id: 2, post_id: 1, locale: "nl", title: '', name: nil>]

I18n.locale = :en
post.title # => 'Globalize rocks!'
post.name  # => 'Globalize'

I18n.locale = :nl
post.title # => ''
post.name  # => 'Globalize'

在一个仅显示“职位”的地方,客户要求我们在“姓名”没有翻译的情况下不显示任何内容。有内置的方法可以做到这一点吗?即:

I18n.locale = :nl
post.title # => ''
post.name_if_translated  # => nil

1 个答案:

答案 0 :(得分:0)

我确实找到了一种解决方法:

post.name_translations[I18n.locale]

但是也许有更好的方法?