我们使用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
答案 0 :(得分:0)
我确实找到了一种解决方法:
post.name_translations[I18n.locale]
但是也许有更好的方法?