/ / Ruby on Rails: вставлення часткової в іншій мові (локалі) - рубін на рейках, інтернаціоналізація, погляди, ерб, партії

Ruby on Rails: вставка часткового в іншу мову (locale) - ruby-on-рейлі, інтернаціоналізація, перегляди, erb, partials

У моїй багатомовній заявці є вигляд, який викликає часткове:

  <%= render :partial => "shared/order", :object => @order %>

мовою за замовчуванням є російська та shared / _order.html.erb використовує I18n.t

<%= t(".order_type") %>: <b><%= t("order_types.#{order.order_type}") %></b>
<%= t ".date_and_time" %>: <b><%= l(order.date, :format => :long) %>

І я хочу ще раз винести ту саму часткову, але англійською мовою, не змінюючи I18n.locale змінна. Написавши щось подібне:

  <%= render :partial => "shared/order", :object => @order %>
<%= render :partial => "shared/order", :object => @order, :locale => "en" %>

Які найкращі практики для досягнення такої поведінки?

Відповіді:

4 для відповіді № 1

Ви завжди можете використовувати щось подібне для запуску кодового блоку в певній місцевості:

<%= render :partial => "shared/order", :object => @order %>
<%- I18n.with_locale("en") do %>
<%= render :partial => "shared/order", :object => @order %>
<%- end %>

2 для відповіді № 2

Гммммм. Складне питання. Я б зробив наступне:

<%= render :partial => "shared/order", :object => @order %>
<%= render :partial => "shared/order", :object => @order, :locals => {:locale => "en"} %>

а потім у частковому поданні:

<% before_locale = I18n.locale %>
<% locale ||= before_locale %>
<% I18n.locale = locale %>

..... do things here ....

<% # return back to original locale %>
<% I18n.locale = before_locale %>

Я справді не знаю, чи найкраще це. Щойно вирішив свою проблему.