首页 > 解决方案 > 长文本翻译

问题描述

几天前我开始使用 Symfony5,我正在尝试 symfony/translation 包。我的问题是我使用两种语言(EN 作为默认语言和 PL)并希望在树枝模板中翻译带有 HTML 标记的长文本块:

<h1>Very long text</h1>
<p>With very long paragraphs and markups</p>

我将翻译存储在 messages.pl.yaml 文件中。对于单个单词或短句,只需使用 {%trans}{%endtrans} 的基本功能就足够了,但不知道如何处理。

标签: internationalizationtranslationsymfony5

解决方案


最佳做法是为每个块级标签设置一个单独的可翻译块,但它很快变得不可读:

<h1>{% trans %}Very long text{% endtrans %}</h1>
<p>{% trans %}With very long paragraphs and markups{% endtrans %}</p>
<p>{% trans with {'%url%': homepage_url_variable} %}With very long paragraphs <a href="%url%">links</a>{% endtrans %}</p>
<p>{% trans %}With very long paragraphs and <i class="fas fa-language"></i> icons{% endtrans %}</p>

所以我建议改用翻译键:

twig template
  <h1>{{ 'very_long_text'|trans }}</h1>
  <p>{{ 'very_long_text_with_p_and_markups'|trans }}</p>
  <p>{{ 'very_long_text_with_p_and_links'|trans({'%url%': homepage_url_variable})|raw }}</p>
  <p>{{ 'very_long_text_with_p_and_icons'|trans|raw }}</p>

messages.en.yaml file:
  very_long_text: Very long text
  very_long_text_with_p_and_markups: With very long paragraphs and markups
  very_long_text_with_p_and_links: With very long paragraphs <a href="%url%">links</a>
  very_long_text_with_p_and_icons: With very long paragraphs and <i class="fas fa-language"></i> icons

缺点是 UI 撰稿人和翻译人员无法更改布局。


推荐阅读