Symfony2长文本的翻译

时间:2012-03-26 18:40:48

标签: symfony translation twig

几周后我开始玩Symfony2。 它似乎是一个非常强大的框架,但有些事情我仍然无法理解。

在文档中,我看到i18n(即翻译)由Translator服务管理。如果我正确理解,翻译网站的主要方式是将我要翻译的邮件集合放在不同文件messages.XX.ymlXX=en,fr,it,etc...)中,每种语言一个。

这可能适用于短文本,可能不包含任何HTML标记。但是你如何处理长文本呢?例如,我如何管理服务条款或关于页面的翻译?

我想我应该为我想要使用的每个语言环境包含不同的模板。我是对的吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:46)

您可以在.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标记。

答案 1 :(得分:1)

我不认为不同的模板可以作为解决方案。但随意选择你喜欢的。我会特别使用https://github.com/stof/StofDoctrineExtensionsBundleTranslatable behaviour一起使用。