Symfony2翻译长文本

22
自几周前我开始使用Symfony2以来,它似乎是一个非常强大的框架,但有些东西我仍然无法理解。
在文档中,我看到i18n(即翻译)由Translator服务管理。如果我理解正确,将要翻译的消息集合放在不同的文件messages.XX.ymlXX=en,fr,it等)中是实现网站翻译的主要方法之一。
这对于可能不包括任何HTML标记的短文本来说可能是完美的。但是,如何处理长文本呢?例如,我如何管理服务条款或关于页面的翻译?
我想我应该为每个我想要使用的语言环境包含不同的模板。我是正确的吗?
谢谢您的帮助!
2个回答

48

你可以在 .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 标签。


嗨。但我该如何在控制器中翻译这个? - barbaris
与其他翻译一样:$translated = $this->get('translator')->trans('TermsOfServiceText'); - Kosta

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接