Rails I18n - 带格式的字符串
Rails I18n - Strings with format
我正在使用 HTML 模板,该模板允许使用应用以下格式的突出显示(粗体)文本:
<h3><span class="semi-bold">Visit</span> details</h3>
这将呈现为:
Visit details
我想为标题添加一个 I18n 层,但我发现在不同的语言中,文本突出显示顺序可能会有所不同:
(en) Visit details
(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>'
Rails 是否提供了更好的方法来处理这种格式化的 i18n 文本?
没有什么能阻止您做以下事情:
# 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"
如您所见,I18n 文件不包含任何硬编码的 HTML 元素。
这里的技巧是如何处理 masculine/feminine(/中性) 名词(例如:法语、德语)。
哦,这样做:
# en.yml
en:
menus:
object_details: "%{Visit} details"
# some_other_locale.yml
some_other_locale:
menus:
object_details: "Details %{Visit}"
# in view
t('menus.object_details', Visit: content_tag(:span, 'Visit', class: 'semi-bold')).html_safe
我正在使用 HTML 模板,该模板允许使用应用以下格式的突出显示(粗体)文本:
<h3><span class="semi-bold">Visit</span> details</h3>
这将呈现为:
Visit details
我想为标题添加一个 I18n 层,但我发现在不同的语言中,文本突出显示顺序可能会有所不同:
(en) Visit details
(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>'
Rails 是否提供了更好的方法来处理这种格式化的 i18n 文本?
没有什么能阻止您做以下事情:
# 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"
如您所见,I18n 文件不包含任何硬编码的 HTML 元素。
这里的技巧是如何处理 masculine/feminine(/中性) 名词(例如:法语、德语)。
哦,这样做:
# en.yml
en:
menus:
object_details: "%{Visit} details"
# some_other_locale.yml
some_other_locale:
menus:
object_details: "Details %{Visit}"
# in view
t('menus.object_details', Visit: content_tag(:span, 'Visit', class: 'semi-bold')).html_safe