Aeg*_*gis 5 fallback ruby-on-rails internationalization globalize3
我正在使用Globalize3和easy_globalize_accesors进行网站的国际化/本地化工作,现在我正在调整表单以管理具有可能翻译的字段.假设我有一个名为Role的类:
class Role
translates :name, :fallbacks_for_empty_translations => true
# rest of class definition
Run Code Online (Sandbox Code Playgroud)
我这样做是因为我想显示默认翻译,如果没有翻译或在当前语言环境中为空,这可以按预期工作.
但是,在我的形式中,我想要相反:我希望每个输入引用不同的语言环境而不是默认语言环境,以显示没有值,除非在role_translations表中有该属性的值.这是我创建输入的方式:
<%= textfield 'role', "name_#{locale}", :class => ... %>
Run Code Online (Sandbox Code Playgroud)
目前,我发生的情况是,如果我创建了一个只有默认语言环境翻译的新角色,当我想编辑角色以将翻译添加到其他语言环境时,每个输入都会显示默认翻译的值.
提前致谢
您可以在模型中实现此方法:
def read_translated_attribute(name)
globalize.stash.contains?(Globalize.locale, name) ? globalize.stash.read(Globalize.locale, name) : translation_for(Globalize.locale).send(name)
end
Run Code Online (Sandbox Code Playgroud)
然后你只需要明确地在表单中设置输入值,如下所示:
<%= text_field 'role', "name_#{locale}", :value => @role.read_translated_attribute(:name), :class => ... %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1535 次 |
| 最近记录: |