Symfony2 перевод длинных текстов - PullRequest
21 голосов
/ 26 марта 2012

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

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

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

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

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

Ответы [ 2 ]

46 голосов
/ 27 марта 2012

Вы можете иметь длинные тексты в файле перевода .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 голос
/ 27 марта 2012

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

...