Rails i18n 在显示之前检查项目是否存在

Rails i18n check if an item exists before display

我有一个基本循环来显示 i18n 列表中的项目:

  <% t('.items').each do |item| %>
    <p><%=item[:description]%></p>
    <p><%=item[:description_html]%></p>
  <%end%>

我的 .yml 文件组织如下:

fr:
  pages:
    index:
      items:
      - title: The title
        description: The description 
        description_html: <p> The description with HTML tags</p>

有时,项目 description_html 在我的 .yml i18n 文件中没有任何值,所以我想先在我的代码中检查 description_html 是否有值,然后再在我的文件中显示它HTML。有什么建议吗?

谢谢!

如果您只是想测试翻译是否可用,您可以使用 I18n.exists?

例如:

<% if I18n.exists?('pages.index.items.description_html') %>
  <%= I18n.t('pages.index.items.description_html') %>
<% end %>

如果您只想在没有翻译时显示一些默认输出,您可以按照 this answer 添加默认值:

<%= I18n.t('pages.index.items.description_html', default: 'No description') %>