我正在使用 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 => ... %>
关于ruby-on-rails - 如何避免 Globalize3 将属性的回退翻译返回到特定上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19798158/