Rails I18n - 格式的字符串

Ale*_*uti 3 ruby-on-rails rails-i18n ruby-on-rails-4

我正在使用HTML模板,允许使用以下格式的突出显示(粗体)文本:

<h3><span class="semi-bold">Visit</span> details</h3>
Run Code Online (Sandbox Code Playgroud)

这将呈现为:

访问细节

我想在标题中添加I18n图层,但我发现在不同语言中,文本突出显示顺序可能会有所不同:

(en)访问细节

(es)Detalles de visita

我觉得把HTML放在语言文件中的想法令人恶心(我想在不同的上下文中使用字符串):

en:
  visit_details: '<span class="semi-bold">Visit</span> details'
es:
  visit_details: 'Detalles de <span class="semi-bold">visita</span>'
Run Code Online (Sandbox Code Playgroud)

Rails是否提供了更好的方法来处理这种格式化的i18n文本?

MrY*_*iji 6

没有什么可以阻止你做如下:

# view
t('menus.object_details', object: content_tag(:span, t('menus.visit'), class: 'semi-bold')).html_safe

# en.yml
en:
  menus:
    object_details: "%{object} details"
    visit: "Visit"

# some_other_locale.yml
some_other_locale:
  menus:
    object_details: "Details %{object}"
    visit: "Visit"
Run Code Online (Sandbox Code Playgroud)

如您所见,I18n文件不包含任何硬编码的HTML元素.

这里的诀窍是如何处理男性/女性(/中性)名词(例如:法语,德语).