Symfony2 长文本翻译
Posted
技术标签:
【中文标题】Symfony2 长文本翻译【英文标题】:Symfony2 translation of long texts 【发布时间】:2012-04-10 06:59:58 【问题描述】:几周后,我开始使用 Symfony2。 看起来是个很强大的框架,但是有些东西我还是看不懂。
在文档中,我看到 i18n(即翻译)由 Translator 服务管理。如果我理解正确,翻译网站的主要方法是将我要翻译的消息集合放在不同的文件messages.XX.yml
(XX=en,fr,it,etc...
) 中,每种语言一个。
这对于可能不包含任何 html 标记的短文本来说是完美的。但是你如何处理长文本?例如,如何管理服务条款或关于页面的翻译?
我想我应该为我想使用的每个语言环境包含不同的模板。我说的对吗?
感谢您的帮助!
【问题讨论】:
【参考方案1】:您可以在 .yml 翻译文件以及 html 标签中包含长文本。将您的服务条款文本放入 messages.xx.yml 文件中,如下所示:
TermsOfServiceText: >
<p>Here goes my Terms of service code</p>
<p>It can be put in several lines and <strong>can include html tags!</strong></p>
<p>It can also include <a href="http://symfony.com/doc/current/book/translation.html" rel="nofollow">links</a></p>
<p>Just make sure that you put '>' sign after your translation keyword like in the first line of this example code
and start your message in next line with double space indentation</p>
现在,在您的 twig
模板调用翻译中:
'TermsOfServiceText'|trans|raw
raw
用于跳过转义的 html 标签。
【讨论】:
好的,我这就走。再次感谢! 嗨。但是我如何在控制器中翻译这个? 和其他翻译一样:$translated = $this->get('translator')->trans('TermsOfServiceText');
【参考方案2】:
我不认为不同的模板可以作为解决方案。但请随意选择您喜欢的。我会选择https://github.com/stof/StofDoctrineExtensionsBundle,尤其是Translatable behaviour。
【讨论】:
以上是关于Symfony2 长文本翻译的主要内容,如果未能解决你的问题,请参考以下文章
在 Doctrine (symfony2) 中对可翻译实体进行版本控制
在 symfony2 原则可翻译中将翻译后备更改为 true 的位置
从 Symfony2/Twig 中的 2 位国家代码获取翻译的国家名称?