i18n多重化轨道

时间:2013-11-11 19:23:57

标签: ruby-on-rails internationalization rails-i18n

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

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

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

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

由于我包含了content_tag,这会使'count'成为<strong> 4 </strong>的字符串并将其传递给翻译并始终返回'Peoples'吗?

还是有更好的方法来做到这一点。

谢谢

1 个答案:

答案 0 :(得分:1)

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

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

然后在你的翻译中使用:

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

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

另一种方法是使用两种不同的翻译并将它们嵌套,一种用于将其包裹在强标签中,另一种用于复制该单词,传入强HTML,类似于链接的方式: / p>

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

t(:text_with_anchor, href: link_to(t(:another_translation), some_path))