Mur*_*tza 5 ruby ruby-on-rails globalize
我如何为我的模型编写表单,我使用rails 4和https://github.com/globalize/globalize进行翻译.我想在一个表单中显示所有翻译,如下例所示.我在这里找到了一个解决方案https://github.com/rilla/batch_translations但我不知道如何实现这一点.这个"批量翻译"是一个宝石还是什么?以及如何安装它.
<h1>Editing post</h1>
<% form_for(@post) do |f| %>
<%= f.error_messages %>
<h2>English (default locale)</h2>
<p><%= f.text_field :title %></p>
<p><%= f.text_field :teaser %></p>
<p><%= f.text_field :body %></p>
<hr/>
<h2>Spanish translation</h2>
<% f.globalize_fields_for :es do |g| %>
<p><%= g.text_field :title %></p>
<p><%= g.text_field :teaser %></p>
<p><%= g.text_field :body %></p>
<% end %>
<hr/>
<h2>French translation</h2>
<% f.globalize_fields_for :fr do |g| %>
<p><%= g.text_field :title %></p>
<p><%= g.text_field :teaser %></p>
<p><%= g.text_field :body %></p>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
Ada*_*per 11
批量翻译宝石很老了,我在使用较新版本的Rails时遇到了困难.我偶然在另一个名为宝石Globalize的-存取,它支持Rails的4.什么是伟大,是因为它可以让你获得类似的方法title_en,teaser_es,title_fr等等.
因此,例如,如果您有一个名称应该包含在所有语言中的功能模型,则可以执行以下操作:
# => Feature Model (feature.rb)
class Feature < ActiveRecord::Base
translates :name
globalize_accessors :attributes => [:name]
end
Run Code Online (Sandbox Code Playgroud)
使用该Feature.globalize_attribute_names方法将给出一个[:name_en, :name_es, :name_fr]可以在form_for帮助器中使用的数组:
//New Feature (new.html.haml)
= form_for @feature do |f|
- Feature.globalize_attribute_names.each do |lang|
= f.text_field lang
= f.submit
Run Code Online (Sandbox Code Playgroud)
你考虑过这样的事情吗?
<%= form_for(@post) do |f| %>
<%= f.error_messages %>
<% [:en, :es, :fr].each do |lang| %>
<h2><%= lang %> translation</h2>
<% f.globalize_fields_for lang do |g| %>
<% [:title, :teaser, :body].each do |field| %>
<p><%= g.text_field field %></p>
<% end %>
<% end %>
<hr/>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
您应该能够自动获取这些区域和字段的列表。然后您只需要一个区域到语言名称的映射,就像{ en: 'English', es: 'Spanish', fr: 'French'}您可以输出正确的语言名称而不是区域代码。(这可能也已经在某个地方可用了。)
| 归档时间: |
|
| 查看次数: |
4136 次 |
| 最近记录: |