【问题标题】:Symfony2 translation of long textsSymfony2 长文本翻译
【发布时间】:2012-04-10 06:59:58
【问题描述】:

几周后,我开始使用 Symfony2。 看起来是个很强大的框架,但是有些东西我还是看不懂。

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

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

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

感谢您的帮助!

【问题讨论】:

    标签: symfony translation twig


    【解决方案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-&gt;get('translator')-&gt;trans('TermsOfServiceText');
    【解决方案2】:

    我不认为不同的模板可以作为解决方案。但请随意选择您喜欢的。我会选择https://github.com/stof/StofDoctrineExtensionsBundle,尤其是Translatable behaviour

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多