{------------------------------------------------------------------------------} { Unit Name: transmod Purpose : An global dictionary component with AskLanguage dialog Author : Vesa Lappalainen Date : -98 Changed : ToDo : Usage : Name translator components on the form as Translator, then this module finds them and copies options from the the template translator on this module. } {------------------------------------------------------------------------------} unit transmod; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, IvMulti, IvDBMult, IvEMulti, ktrans, IvDatDic, IniName, IvDictio, IvAMulti, IvBinDic; type TTM = class(TForm) Translator: TkTranslator; Dict: TIvBinaryDictionary; procedure TMCreate(Sender: TObject); procedure TMDestroy(Sender: TObject); private { Private declarations } public { Public declarations } procedure Translate; virtual; procedure AskTranslate; virtual; end; function TR(const s:string):string; // TRE does not translate, but gives opertunity to scan strings function TRE(const s:string):string; procedure InitTranslate(t:TIvTranslator); procedure SetNumberFormat; var TM: TTM; implementation uses KString,IniFiles,IvLanguD; //,IvDictio; {$R *.DFM} procedure SetNumberFormat; begin // DecimalSeparator := '.'; // ThousandSeparator := #$a0; end; function TR(const s:string):string; begin if assigned(TM) then begin Result := TM.Dict.Translate(s); if ( Result = '' ) and ( s <> '' ) then Result := s; end else Result := s; end; function TRE(const s:string):string; begin Result := s; end; procedure InitTranslate(t:TIvTranslator); begin if ( not assigned(TM) ) then exit; if ( t.Owner = TM ) then exit; if ( not assigned(t.Dictionary) ) then begin t.Close; // t.Restrictions.Add(TIvRestriction.Create('','ButtonOta', // [ivrtNoTranslation])); // t.Restrictions.Add(TIvRestriction.Create('','LabelSum', // [ivrtNoTranslation])); t.Targets.assign(TM.Translator.Targets); t.Dictionary := TM.Translator.Dictionary; t.Options := TM.Translator.Options; t.Open(TControl(t.Owner)); end; t.Translate; end; procedure TTM.Translate; var n,i:integer; t:TIvTranslator; f:TForm; c:TComponent; begin n := Screen.FormCount; for i:=0 to n-1 do begin f := Screen.Forms[i]; // as TForm; if ( f.ClassName = 'TTM' ) then continue; c := f.FindComponent('Translator'); if not ( c is TIvTranslator ) then continue; t := c as TIvTranslator; { t.Targets.assign(Translator.Targets); t.Dictionary := Translator.Dictionary; t.Open(f); t.Translate; } InitTranslate(t); end; SetNumberFormat; { IvDBDictionary1.PrimaryLanguage := 9; } end; procedure TTM.AskTranslate; var lan : integer; begin // if not SelectLanguage(Dict,'Language',[ivloShowAllLanguages],0,lan) then exit; if not SelectLanguage(self,Dict,'Language',[ivloShowAllLanguages(*,ivloUseNativeLanguage*)],0,lan) then exit; Dict.Language := lan; // if not Dict.SelectLanguage('Language',0,[]) then exit; // if not Translator.SelectLanguage(0,true) then exit; Translate; end; procedure TTM.TMCreate(Sender: TObject); var Ini : TIniFile; k :integer; begin SetNumberFormat; Dict.Open; // Translator.Open(self); Translator.Open(TControl(self)); Ini := TIniFile.Create(GetIniName('')); SetNumberFormat; if ( Ini <> NIL ) then begin k := Ini.ReadInteger('Languages','CurLanguage',0); // Translator.Language := k; Dict.Language := k; Ini.Free; end; SetNumberFormat; Translate; end; procedure TTM.TMDestroy(Sender: TObject); var Ini : TIniFile; k :integer; begin Ini := TIniFile.Create(GetIniName('')); if ( Ini = NIL ) then exit; // k := Translator.Language; k := Dict.Language; Ini.WriteInteger('Languages','CurLanguage',k); Ini.Free; end; end.