Bei der Initialisierung der
RTL Deines Programms wird nach einer
DLL gesucht, welche die Daten in der anderen Sprache enthält.
Falls eine passende gefunden wird, werden die Ressourcen aus der
DLL anstatt der einkompilierten verwendet.
Bei Foo.exe wird im gleichen Verzeichnis nach Foo.deu (dreistellige Sprachkennung (Deutsch (Deutschland)) des Benutzers) und Foo.de (zweistellige Sprachkennung (Deutsch) des Benutzers) gesucht. Wobei das pro Benutzer/Programm unter HKEY_CURRENT_USER\Software\Borland\Locales überschrieben werden kann.
ps: Das bezieht sich nicht nur auf Strings, sondern auch auf Forms und andere Ressourcen. Zur einfacheren Verwaltung/Erstellung von Spach-DLLs gibt es in den teureren Delphi-Versionen einen Ressource-
DLL Wizard und Language-Tools.