Hi
First before I begin, I like your general suggestion to line up fields. Unfortunately, I also think it will take us some time to get this exactly implemented.
I think it's a complete non issue. Just like you guys are discussing for the English, the translator has the same constraint to simply take a base translation and then fiddle around until the words fit the space available. If they have to use abbrv's then they will do so...
Put a stake in the ground and run with itA cheap hack for the gettext contexts would be to do two lookups, one with the field name concatenated with the page name, eg "Account Number{Create Invoice}" and again if that fails with just the field name. This way you have the ability to override the field name per form. The form names should also match the CSS classes for convenience
Now, there are other methods to make this work with CSS assuming we allow per-translation hooks into the CSS. For example, one could move both the input and the label over a certain amount of space in one translation. Relative CSSP is probably the way to go for this.
Why not just wrap each page in a div and attach a class. One class (or ID more likely) gives you the name of the form you are editing, another class gives you the language.
Now if you need every label 3 feet wider on the german page you simply tweak the CSS appropriately... More specific classes naturally override less specific, so this should tend to work as expected with few surprises
Bonus marks if you only include the extra language CSS files if actually required rather than for every page refresh.
Seems simple enough... Good luck Ed W