长文本翻译

Long text translation

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

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

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

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

<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撰稿人和翻译人员无法更改布局。