Ruby on Rails:用不同的语言插入部分语言(语言环境)

时间:2011-10-30 21:33:10

标签: ruby-on-rails internationalization views 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' %>

实现此类行为的最佳做法是什么?

2 个答案:

答案 0 :(得分:5)

您始终可以使用类似的内容在特定区域设置中运行代码块:

winpty docker-compose run php composer install

答案 1 :(得分:2)

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

我真的不知道这是否是最好的。作为解决问题的第一个解决方案,我刚想到了。