在我的多语言应用程序中有一个调用部分的视图:
<%= 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' %>
实现此类行为的最佳做法是什么?
答案 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 %>
我真的不知道这是否是最好的。作为解决问题的第一个解决方案,我刚想到了。