Rails: 是否可以根据I18N显示不同的内容?

Rails: Is it possible to show different content based on I18N?

不只是文字。

比如我可能想在语言是中文的时候显示一个button,在语言是英文的时候隐藏

我的想法 :, 在 controller 中,让 I18N 可以通过视图访问,也许像 @I18n = I18n.locale

您始终可以使用 I18n.locale 检查当前区域设置的值。所以你可以把测试挂掉:

<% if I18n.locale =~ /^zh/ %>
  <!-- button code -->
<% end %>

请注意,我在这里针对任何中文语言环境进行测试,afaik 都以 "zh"

开头

选项 1:检查 controller/view 中的区域设置(最好在控制器中)并有条件地呈现;

选项 2:将按钮的 HTML 放入语言环境字典

# config/locales/zh-CN.yml
zh-CN:
  welcome_html: <button>欢迎</button>      
  goodbye:
    html: <button>再见</button>

来自官方文档:

带有“_html”后缀的密钥和名为 'html' 的密钥被标记为 HTML 安全。当您在视图中使用它们时,HTML 将不会被转义。

在此处阅读更多内容:http://guides.rubyonrails.org/i18n.html