对不起,如果这真的很容易。但是我尝试了很多方法来添加I18n并且似乎没有用。
这是视图
= @event.categories.map(&:name).to_sentence
这是在语言环境
中 #Categories
categories:
gastronomy: Gastronomy
family: Family
sports: Sports
scene: Scene
traditional: Tradition
music: Music
party: Party
我设法让翻译工作在表单中,但不是在这里。知道为什么吗?
答案 0 :(得分:1)
选项1
假设有以下yaml文件结构
categories:
gastronomy: Gastronomy
family: Family
sports: Sports
scene: Scene
traditional: Tradition
music: Music
party: Party
现在您可以执行以下操作:
@event.categories.map{|n| I18n.t("categories.#{n}"}.to_sentence
选项2
更好的是,您可以更改Category
模型以返回本地化名称:
class Category < ActiveRecord::Base
def name
key = read_attribute(:name)
return key if key.blank? # return immediately if nil
# use the key as value if the localization value is missing
I18.n("categories.#{key}", :default => key.humanize)
end
end
现在,name
方法返回一个本地化值:
cat.name # localized name
您的原始陈述也适用
@event.categories.map(&:name).to_sentence
选项3
使用Globalize3 gem。有关详细信息,请观看此screencast。