几周后我开始玩Symfony2。 它似乎是一个非常强大的框架,但有些事情我仍然无法理解。
在文档中,我看到i18n(即翻译)由Translator服务管理。如果我正确理解,翻译网站的主要方式是将我要翻译的邮件集合放在不同文件messages.XX.yml
(XX=en,fr,it,etc...
)中,每种语言一个。
这可能适用于短文本,可能不包含任何HTML标记。但是你如何处理长文本呢?例如,我如何管理服务条款或关于页面的翻译?
我想我应该为我想要使用的每个语言环境包含不同的模板。我是对的吗?
感谢您的帮助!
答案 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/StofDoctrineExtensionsBundle与Translatable behaviour一起使用。