Many thanks for tracking this down.
To solve the remaining mystery: The string loss will happen if you then edit the dialog a second time.
There's a mismatch between how Opus expects the data to be when it loads it, and how it saves it out again. Specifically, the lang="english"
attribute is expected to be on the strings
node when loading (and according to the manual), but if Opus edits the resources and re-saves them, it moves the lang attribute to the resource
node.
In the next version, we will fix the saving code so it re-saves the XML correctly. We will also make the loading code cope with both situations, so you can salvage strings in resources that have been through the dialog editor once but not lost entirely by a second edit.