我正在使用 Globalize3 和 easy_globalize_accesors 进行网站的国际化/本地化,现在我正在调整表单来管理具有可能翻译的字段。
假设我有一个名为 Role 的类:
class Role
translates :name, :fallbacks_for_empty_translations => true
# rest of class definition
我这样做是因为我想在当前语言环境中没有翻译或为空时显示默认翻译,并且这按预期工作。
但是,在我的表单中,我想要相反的情况:我希望每个引用与默认区域设置不同的区域设置的输入不显示任何值,除非 role_translations 表中存在该属性的值。以下是我创建输入的方法:
<%= textfield 'role', "name_#{locale}", :class => ... %>
目前,如果我创建了一个仅包含默认语言环境翻译的新角色,那么当我想要编辑该角色以将翻译添加到其他语言环境时,每个输入都会向我显示默认翻译的值。
提前致谢
您可以在模型中实现此方法:
def read_translated_attribute(name)
globalize.stash.contains?(Globalize.locale, name) ? globalize.stash.read(Globalize.locale, name) : translation_for(Globalize.locale).send(name)
end
然后,您只需要在表单中显式设置输入值,如下所示:
<%= text_field 'role', "name_#{locale}", :value => @role.read_translated_attribute(:name), :class => ... %>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)