在可用语言环境的子集上全球化访问器
Globalize accessors on subset of available locales
根据设计,某些 类 将仅处理可用语言的子集。
globalize-accessors
gem 还是比较有用的,但是渲染需要定义如下
Class.globalize_attribute_names
所以虽然 available_locales = [:en, :ru, :fr, :de]
,但目标是使用较小的数组 [:en, :ru]
documentation 表示 Calling globalize_accessors with no options will therefore generate accessor methods for all translated fields and available languages
。但所谓的调用方式是在模型中
globalize_accessors :locales => [:en, :fr], :attributes => [:title]
globalize_accessors
方法如何引用数组,由
之类生成的东西
@post.owner.ownerlocales.pluck('locale')
(虽然数组值被引用...)
找到了一个可行的解决方案,但没有解决上述问题,是基于 globalize-accessors
gives you access to methods: title_pl, title_en, title_pl=, title_en=
因此,生成白名单的控制器方法
@locales = []
@post.owner.ownerlocales.each do |ol|
locale = ol.locale
@locales.push(locale)
end
... 然后在视图中处理从白名单
中过滤掉 globalize_processors
<% Post.globalize_attribute_names.each do |lang| %>
<% my_string = lang.to_s %>
<% @locales.each do |locale| %>
<% checkstring = "_" + locale %>
<% if my_string.include? checkstring %>
<div class="row">
<%= t(lang[0..-4]) %> - <%= lang[-2, 2] %> <br />
<%= f.text_area lang, rows: "3" %>
</div>
<% end %>
<% end %>
<% end %>
效率不高,功能正常。
根据设计,某些 类 将仅处理可用语言的子集。
globalize-accessors
gem 还是比较有用的,但是渲染需要定义如下
Class.globalize_attribute_names
所以虽然 available_locales = [:en, :ru, :fr, :de]
,但目标是使用较小的数组 [:en, :ru]
documentation 表示 Calling globalize_accessors with no options will therefore generate accessor methods for all translated fields and available languages
。但所谓的调用方式是在模型中
globalize_accessors :locales => [:en, :fr], :attributes => [:title]
globalize_accessors
方法如何引用数组,由
@post.owner.ownerlocales.pluck('locale')
(虽然数组值被引用...)
找到了一个可行的解决方案,但没有解决上述问题,是基于 globalize-accessors
gives you access to methods: title_pl, title_en, title_pl=, title_en=
因此,生成白名单的控制器方法
@locales = []
@post.owner.ownerlocales.each do |ol|
locale = ol.locale
@locales.push(locale)
end
... 然后在视图中处理从白名单
中过滤掉 globalize_processors<% Post.globalize_attribute_names.each do |lang| %>
<% my_string = lang.to_s %>
<% @locales.each do |locale| %>
<% checkstring = "_" + locale %>
<% if my_string.include? checkstring %>
<div class="row">
<%= t(lang[0..-4]) %> - <%= lang[-2, 2] %> <br />
<%= f.text_area lang, rows: "3" %>
</div>
<% end %>
<% end %>
<% end %>
效率不高,功能正常。