CREATE TABLE Transl (trSeek C(200), trEnglish M, trSpanish M, trDutch M) INDEX ON trSeek TAG trSeek *-- In the form's INIT() event we are translating each label and tooltiptext depending on the language setting THIS.lblEmployeeName.Caption = DoTranslate("Employee name") *-- And in DoTranslate we pick up the string and get the translation: PROCEDURE DoTranslate LPARAMETERS tcString LOCAL lcLanguage lcLanguage = "Spanish" IF SEEK(tcString,"Transl","trSeek") lcRetVal = EVALUATE("Transl.tr" + lcLanguage) ELSE lcRetVal = tcString ENDIF RETURN lcRetValThe translation table has about 3000 entries, is very fast and of course we distribute this table together with the VFP application, so that is no big deal in VFP.