So I went to see how they do escaping, because my localization is implemented such that it's possible to have HTML tags in strings themselves but format arguments must be escaped.
Wrapping an escaped string into a special object is a MUCH cleaner solution than the indescribable monstrosity JTwig does. This feels like it was written by people who actually knew what they were doing — which is an unfortunately rare occasion in the modern world of software development.
I'm feeling weird being excited about these things, but then I've spent too much time hacking JTwig to get it to do what I want, with varying success.