So I figured, even though I don't understand why using XML is that much better than the method I've already employed (no speed gains, anyways), I'd give it a go. I got it working fine, except for one small thing... two of my phrases include HTML, and that breaks the whole thing. Not the HTML itself, but apparently adding any kind of attribute to an HTML element seems to break it.
<phrase id="admin_module_failed">The specified administrative module could not be loaded:<br /><span style=\"font-weight: normal;\">%s</span></phrase>
<phrase id="admin_module_not_found">The specified administrative module could not be found:<br /><span style="font-weight: normal;">%s</span></phrase>
If I remove the span, it works. Since these are the only two phrases I do this on, I could easily remove it from both, but I don't really want to. So how do I incorporate this into an xml phrase file without the whole thing busting down? I'd post the error, but just having one of these phrases in the file produces literally two pages of errors.
try wrapping the elements test in a <![CDATA[ ]]> tag, because xml elements can have sub elements the parser will look inside your phrase element for '<' then interpret them as XML, CDATA tells the parser to ignore it.