Symfony2 перевод длинных текстов
С нескольких недель я начал играть с Symfony2.
Это очень мощная структура, но есть некоторые вещи, которые я еще не могу понять.
В документации я вижу, что i18n (т.е. переводы) управляется службой Translator. Если я правильно понял, основным способом перевода веб-сайта является сбор коллекции сообщений, которые я хочу перевести в разные файлы messages.XX.yml
(XX=en,fr,it,etc...
), по одному для каждого языка.
Это может быть идеально подходит для коротких текстов, которые, возможно, не содержат никакой разметки HTML. Но как вы относитесь к длинному тексту? Например, как я могу управлять переводом "Условия обслуживания" или "О странице"?
Я предполагаю, что должен включать разные шаблоны для каждой локали, которую я хочу использовать. Я прав?
Спасибо за вашу помощь!
Ответы
Ответ 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.
Ответ 2
Я не думаю, что разные шаблоны могут быть как решение. Но не стесняйтесь выбирать то, что вы предпочитаете. Я перейду с https://github.com/stof/StofDoctrineExtensionsBundle, в частности, с помощью Переводимое поведение.