如何在 Rails 中使用 Mobility gem 以一种形式实现所有翻译?
How to implement all translations in one form with Mobility gem in Rails?
在我的 Rails 应用中,我使用 Mobility gem 进行翻译
如何构建包含所有翻译的表单,例如:
- 名称 [en]: _______
- 姓名 [fr]: ________
- 姓名[de]: _______
- ...
最好的方法是什么?
确实没有关于此的任何文档,但使用 Mobility 创建这样的表单并不难。
这是一个示例,假设您有一个对象 @post
具有已翻译的属性 title
:
<%= form_for @post do |f| %>
<% I18n.available_locales.each do |locale| %>
<div>
<% attr_name = "title_#{Mobility.normalize_locale(locale)}" %>
<%= f.label attr_name %>
<%= f.text_field attr_name %>
</div>
<% end %>
<%= f.submit %>
<% end %>
在您的控制器中,您还必须 permit
本地化的属性名称,例如:
def update
# ...
@post.update(permitted_params)
# ...
end
# ...
private
def permitted_params
params.require(:post).permit(I18n.available_locales.map { |l|
:"title_#{Mobility.normalize_locale(l)}"
})
end
在我的 Rails 应用中,我使用 Mobility gem 进行翻译
如何构建包含所有翻译的表单,例如:
- 名称 [en]: _______
- 姓名 [fr]: ________
- 姓名[de]: _______
- ...
最好的方法是什么?
确实没有关于此的任何文档,但使用 Mobility 创建这样的表单并不难。
这是一个示例,假设您有一个对象 @post
具有已翻译的属性 title
:
<%= form_for @post do |f| %>
<% I18n.available_locales.each do |locale| %>
<div>
<% attr_name = "title_#{Mobility.normalize_locale(locale)}" %>
<%= f.label attr_name %>
<%= f.text_field attr_name %>
</div>
<% end %>
<%= f.submit %>
<% end %>
在您的控制器中,您还必须 permit
本地化的属性名称,例如:
def update
# ...
@post.update(permitted_params)
# ...
end
# ...
private
def permitted_params
params.require(:post).permit(I18n.available_locales.map { |l|
:"title_#{Mobility.normalize_locale(l)}"
})
end