Symfony2 перевод длинных текстов

Через несколько недель я начал играть с Symfony2. Это кажется очень мощным фреймворком, но есть некоторые вещи, которые я до сих пор не могу понять.

В документации я вижу, что i18n (т.е. переводы) управляется службой Переводчик. Если я правильно понял, основной способ перевести веб-сайт - это поместить коллекцию сообщений, которые я хочу перевести, в разные файлы messages.XX.yml (XX=en,fr,it,etc...), по одному для каждого языка.

Это может быть идеально для коротких текстов, которые, возможно, не содержат разметки HTML. Но как вы справляетесь с длинным текстом? Например, как я могу управлять переводом Условий обслуживания или страницы «О нас»?

Думаю, мне следует включить разные шаблоны для каждой локали, которую я хочу использовать. Я прав?

Спасибо за вашу помощь!


person Andrea    schedule 26.03.2012    source источник


Ответы (2)


У вас могут быть длинные тексты в файле перевода .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.

person Kosta    schedule 26.03.2012
comment
Хорошо, я пойду сюда. Спасибо еще раз! - person Andrea; 27.03.2012
comment
Привет. но как я могу перевести это в контроллер? - person barbaris; 18.06.2014
comment
То же, что и для других переводов: $translated = $this->get('translator')->trans('TermsOfServiceText'); - person Kosta; 18.06.2014

Не думаю, что решением могут быть разные шаблоны. Но смело выбирайте то, что вам больше по душе. Я выберу https://github.com/stof/StofDoctrineExtensionsBundle, в частности с Переводимое поведение.

person Polmonino    schedule 26.03.2012