根据当前语言环境如何呈现不同的部分视图

3

我有index.erb和index-de.erb文件,看到一个例子,在I18n.locale为:de的情况下,会渲染index-de文件,但是我尝试过这种方式,没有效果,并且我找不到任何关于这个问题的文档。所以这个方法是否实际可行?还是需要额外的插件来实现呢?

3个回答

2

它们必须被命名为index.LOCALE.EXTENSION,例如对于de locale(I18n.locale),可以是index.de.erb或index.de.html.erb。


1

本地化已经内置于Rails 2.2中;您可能想要查看i18n screencast和/或guide

编辑:特别是请查看指南的第3.3节“本地化视图”。简短的答案是正确的文件名为index.de.html.erb。


0

来自2022年(Rails 7)的声音。在Ruby on Rails中,具有特定语言环境的视图和局部视图会自动选择。

因此,当I18n.locale设置为it并渲染show时,它将首先查找show.it.html.erb而不是show.html.erb

当您拥有呈现多种语言的布局(例如CMS中发生的事情)时,您可以使用I18n.with_locale临时更改语言环境:

<% I18n.with_locale(:it) do %>
  <%= render(partial 'header') %>
<% end %>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接