procedure TranslateComponent(AnObject: TComponent; TextDomain:string='');

This procedure will basically do the same as TranslateProperties(), but it will add a subcomponent to AnObject, which remembers all untranslated strings. This makes it possible to retranslate AnObject to another language later.

The second time that TranslateComponent() is called for a specific object, the subcomponent (that remembers all untranslated strings) is detected, and a retranslation is done. The retranslation retranslates exactly those properties that were translated the first time - it does not recurse all subcomponents to redetect string properties. Therefore, you must be careful that all subcomponents that were present at the first translation, also are present at the retranslation.