TsiLang and form inheritance / run-time issue
Posted: Mon Feb 12, 2007 11:15 am
Why is it that to allow a form to be translated, the siLang component needs to have streamed TranslationData to the DFM? Why can't there be a run-time option for situations where translation is only being done at run-time? The design time option means whenever any change is made to a form, I have to make sure the siLang component is re-opened and saved, which means it isn't very extensible. I believe this is a weakness in the siLang components. The problem is even worse when working with form inheritance :
I have a project with 2000 forms. I have a base form frmBase with siLangRT on it, I have a descendent form frmTranslateBase which sets siLangRT.IsInheritedOwner to true so that all other forms inherit from this, (our applications were designed this way because it make re-use and propagation of changes far easier). We only have one language - English - in the dispatcher at design time because we dynamically add languages at run time read from a table in our database, this keeps things flexible, allows our apps to be used in non-multi-lingual situations and keeps DFMs smaller. Where appropriate, our users will perform the translation of our apps at run-time, and their translations are saved to SIB files; these get loaded by the individual forms.
At design time, if I open the siLang component on a descendent form I see the list of strings that will be translated, but as we only have one language, our default which is English, I don't want to make any changes. The problem is, if I don't make a change, no translation data is streamed to the DFM, and therefore I can't translate the form : when I invoke the language editor at runtime all I see is ancestor's data e.g frmBase
With the current implementation of siLang, to enable translation of each of the 2000 forms and 100s of datamodules it seems I may be forced to open each in turn and make a change to something in the siLang component. If so, this would be an impossibly huge task and poor design for form inherited applications.
My company purchased ten licenses of your product believing it to be the best solution on the market, but on attempting to implement it into our products it seems we have hit a major show-stopping stumbling block! Can you offer any suggestions?
I have a project with 2000 forms. I have a base form frmBase with siLangRT on it, I have a descendent form frmTranslateBase which sets siLangRT.IsInheritedOwner to true so that all other forms inherit from this, (our applications were designed this way because it make re-use and propagation of changes far easier). We only have one language - English - in the dispatcher at design time because we dynamically add languages at run time read from a table in our database, this keeps things flexible, allows our apps to be used in non-multi-lingual situations and keeps DFMs smaller. Where appropriate, our users will perform the translation of our apps at run-time, and their translations are saved to SIB files; these get loaded by the individual forms.
At design time, if I open the siLang component on a descendent form I see the list of strings that will be translated, but as we only have one language, our default which is English, I don't want to make any changes. The problem is, if I don't make a change, no translation data is streamed to the DFM, and therefore I can't translate the form : when I invoke the language editor at runtime all I see is ancestor's data e.g frmBase
With the current implementation of siLang, to enable translation of each of the 2000 forms and 100s of datamodules it seems I may be forced to open each in turn and make a change to something in the siLang component. If so, this would be an impossibly huge task and poor design for form inherited applications.
My company purchased ten licenses of your product believing it to be the best solution on the market, but on attempting to implement it into our products it seems we have hit a major show-stopping stumbling block! Can you offer any suggestions?