Finaly I use the single form option with a language table to populate the label captions.
During form opening, I replace all label captions by corresponding sentences found in the language table.
It works as:
3 fields in language table : id , string and id_lang
All label captions contains something like $$$48$$$
48 corresponds to the id field in language table
First action when opening Form is to call the Localize function
'Replace for all controls the caption that correspond to syntax $$$xx$$$
Public sub Localize(byref Form as Form)
Dim Control As Object
Form.Caption = ConvertText(Form.Caption) 'Here replace form title
For Each Control In Form.Controls
Control.Caption = Localize_ConvertText(Control.Caption )
Next Control
End sub
'Return text found in language table, or return text if it don't correspond to the $$$xx$$$ syntax
Private Function Localize_ConvertText(ByRef text As String) As String
Dim IdString As Long
IdString = Localize_GetIdString(text) 'This function return the identificator xx in $$$xx$$$, and if syntax does not correspond it returns -1
If IdString = -1 Then
'it is not a $$$xx$$$ caption, keep the same text
Localize_ConvertText = text
Else
'return the corresponding string from the language table
'be sure to set IdLang to current language, according with the language table field id_lang
Localize_ConvertText = DFirst("string", "language_tbl", "id=" + CStr(IdString) + " AND id_lang="+cstr(IdLang))
End If
End Function
This works very well, really quick (i don't see difference with static labels). You can adopt this solution.
Next step is to set text that changes during form life, with various parameters....