Well I am not talking user point of view, but developper. Because I don't think the "average user" will translate the ini file, but search for an already translated one. So why bother when you can add a .dll to an .exe ? If you have a french, german, etc.. developper to update the .dll, the "average user" will download it and "basta!". I think you already know that but: 1- isolate the strings in resourcestring. 2- isolate the window interface (done by (3)). 3- create language dll with DLL Resource Expert. 4- translate the (1) 5- translate the (2) and the work is done... And so from that, when the team modify the REAL code or the interface, you "just" have to update via the Expert Resource DLL and translate new strings and controls labels. This processus is done almost without touch of the REAL code. I am not talking about connecting controls labels, text, lines, etc... to .ini file, because as you say it is a tedious work. Sample of code: I have just replace the strings in the source, include unit unRessources in the necessary .pas files, and translate the resourcestrings. unit unRessources; interface resourcestring errUnableToConnect = 'Unable to connect to the registry on %s (%d)'; S1Hour = '1 hour, '; S1LittleNoise = '# 1) little noise'; S1Minute = '1 minute, '; S1Second = '1 second.'; S2MediumNoise = '# 2) medium noise'; S3HeavyNoise = '# 3) heavy noise'; SAddingThisScriptTo = 'Adding this script to %s :'; SAntiShit = ' AntiShit: '; SAppendingCredits = 'Appending Credits'; . . implementation end.