Ruby on Rails: pasting partial text in another language (locale)

There is an opinion that causes partial in my multilingual application:

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

the default language is Russian, and shared / _order.html.erb uses I18n.t

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

And I want to do the same partial one more time, but in English, without changing the I18n.locale variable . By writing something like this:

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

What are the best methods to achieve this behavior?

+5
source share
2 answers

You can always use something like this to run a block of code in a specific locale:

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

Hmmmmm. . :

<%= 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 %>

, . .

+2

All Articles