1

我需要根据数字对文本进行复数。所以我的翻译文件有这个,

   en:
     people:
       one: %{count} People
       other: %{count} Peoples

问题是,我需要加粗数字。所以在我看来,我有这个,

 raw t(.people, count: content_tag(:strong, 4)) 

由于我包含了一个 content_tag,这是否会使“计数”一个字符串<strong> 4 </strong>并将其传递给翻译并始终返回“人民”?

或者有没有更好的方法来做到这一点。

谢谢

4

1 回答 1

1

一种选择是使用原始 i18n 输出并将 HTML 放入 i18n:

en:
 people:
   one: <strong>%{count}</strong> People
   other: <strong>%{count}</strong> Peoples

然后在您的翻译中使用:

<%= raw t(:people, count: 4) %>

这并不理想,但您的用例可能很简单,这是最佳解决方案。

另一种方法是使用两种不同的翻译并嵌套它们,一种仅用于将其包裹在强标签中的数字,另一种用于单词的复数形式,传入强 HTML,类似于您如何处理链接:

text_with_anchor: This is a link. %{href} to click it!

t(:text_with_anchor, href: link_to(t(:another_translation), some_path))
于 2013-11-11T19:42:02.257 回答