Ответ 1
Если вы хотите локализовать большие куски кода и контента, вы можете просто использовать частичные. Частицы уважают соглашения I18n, как и представления и шаблоны.
# app/views/about.html.erb
<%= render :partial => 'about_contents' %>
# app/views/_about_contents.en.html.erb
<h1>About us</h1>
<p>Some large content...</p>
# app/views/_about_contents.fr.html.erb
<h1>A propos</h1>
<p>Un contenu quelconque...</p>
Для ярлыков, небольших текстов, форматов дат и т.д. вы можете продолжать использовать файлы I18n.t
/locale.
ОБНОВЛЕНИЕ:
Если содержимое, которое должно быть локализовано, содержит код форматирования, вы также можете использовать content_for
, чтобы получить текстовое содержимое из частичного и избежать дублирования кода для макетов и разделяемых разметок.
# app/views/about.html.erb
<%= render :partial => 'about_contents' %>
<div class="whatever">
<p><%= yield :content_one %></p>
</div>
</div class="whatever_two">
<p><%= yield :content_two %></p>
</div>
# app/views/_about_contents.en.html.erb
<% content_for :content_one do %>
Some large content...
<% end %>
<% content_for :content_two do %>
Some other large content...
<% end %>
# app/views/_about_contents.fr.html.erb
<% content_for :content_one do %>
Un contenu quelconque...
<% end %>
<% content_for :content_two do %>
Un autre contenu quelconque...
<% end %>