internationalization - 长文本翻译
问题描述
几天前我开始使用 Symfony5,我正在尝试 symfony/translation 包。我的问题是我使用两种语言(EN 作为默认语言和 PL)并希望在树枝模板中翻译带有 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 撰稿人和翻译人员无法更改布局。
推荐阅读
- c++ - 如何在不四舍五入的情况下获得精确的输出?
- python - 有什么有效的方法来存储 numpy 数组
- c++ - 如何使用 vcpkg 和 cmake 链接 VScode 中的 boost 库?
- swift - SwiftUI - 日期处理
- python - 根据另一个列表删除列表中的项目
- python - 如何在运行时隐藏 PyInstaller 可执行文件生成的资源文件?
- c# - 达到条目最大长度时的 Xamarin DisplayAlert
- javascript - Choropleth 世界地图,国家名称在彩色领土上方
- deep-learning - 直接训练 Transformer Encoder 层和填充序列的正确方法
- kotlin - ktlint 和 KotlinProjectExtension