Thanks for the good explanation.
There are two major point that is not mentioned.
1. All interface items must be autosized, since strings have different length in each language. In my opinion, if the main interface is in English, at least 50% more space shall be considered.
2. Anchoring must be used, to prevent overlaps.
I added a GUI Design section in the wiki.
3. ShowMessage is not proper for localization, because the OK, Cancel, Yes, No, etc. strings will be retrieved from the language of the OS (or LCL?? which might not be translated). QuestionDlg is a much better solution. The thing I hate about is that I cannot find out how to remove the delphi-like icons from the buttons.
Because QuestionDialog takes too much parameters, things mighty be made easier:
procedure MsgBox (aString: string);
begin
QuestionDlg (SMessage,aString,mtCustom,[mrOK,SOK],'');
end;