Hacker News new | ask | show | jobs
by throwaway3neu94 1906 days ago
Wat?

I've also worked on a Delphi based CRM and I've wasted man months of my life time on a task we called "checking forms". You see, Delphi's UI designer is (was?) pixel based (widgets have fixed x/y/w/h), but strings translated to different human languages have different lengths (in pixel). (Complicated by dynamically calculated and variable length strings.)

And so for every release, for every language version (of which there were like 15), engineers would click through every single form in this product. Then fix any widgets were the text was cut off specifically for that language manually in a shitty commercial i18n tool that can show you Delphi forms, but only the outlines of controls.

It took an engineer about 3 weeks of effort to go through the product in one language. I may never forget what "Ok" and "Cancel" mean in several languages I otherwise do not know at all.

Java and C# changed everything for me with their constraint based layouts. I believe later Delphi versions added that, but it was definitely after others lead the way.

(Maybe there was a better way to do it with Delphi, but this was >10 years ago ago, and the product was _old_ even back then, and it was my first job and I didn't question why things were done this way.)

2 comments

Delphi was first released in 1995. Screen real estate at the time was very different. When people started using measures other than pixels there was a huge codebase using them already.

The translation systems were really atrocious. I had to develop one myself because the ones that I evaluated were useless.

It took me a couple of weeks, but once I found the right (and only reasonable) way, with the help of library introspection features it was very easy to add new automated translations.

I wrote it down in my defunct blog, 15 years ago. I guess you didn't find it at the time.

Motif was one of the first GUI toolkits with constraint based layouts actually.