By defaults translations are assumed to contain only text, so PHPTAL escapes all "<
" characters.
You can use structure
keyword in i18n:translate
to disable escaping and use translated text as-is:
<div i18n:translate="structure '<b>bold text</b>'" />
Gives:
<div><b>bold text</b></div>
Caveats: This will only work in simplest cases – TAL attributes inside translated strings are ignored. Ill-formed XHTML in translations will break page well-formedness.