+1
A box model is really the way to go here. This is how the real toolkits do it; you don't translate the entire layout, just the text. The toolkit generates a suitable layout at runtime based on the text sizes. That makes it much easier to edit dialogs.
We are stuck with the inferior Windows dialog model for Wine. Translating at build time seems a good solution to me.
It should never, ever, ever be necessary to adjust the generated layout for a specific language. The point is to move past such things and only translate the text. Any layout adjustments that are necessary should be handled by the generator.
I don't think a dependency on po/gettext and the resulting two translation systems instead of one is a good idea. I think it is best to use the existing rc system to translate all text.
I personally am not fond of using XML for.. well.. anything at all.. but it's still an improvement over the redundant layout information we have now.
Vincent Povirk