Tlanguage = record
Component_count: Byte;
Components: array [1..100] of Tcompo;
Text_count: Byte;
Text: array [1..100] of Ttext;
Language_Name: String;
end;
Const
LNF_COMPONENT_NR = 1;
LNF_TEXT_NR = 2;
LNF_COMPONENT_STR= 'COMP';
LNF_TEXT_STR = 'TXT';
Procedure LoadLNFfile(filename: String);
Function Updatecomponents(Mainform: Tform;
New_language: String = ''): Boolean;
Function Gettext(Name: String): String;
Procedure Set_current_languagenumber(Language: String);
Function Gettext(Name: String): String;
Var
I: byte;
begin
For I := 1 to High(Languages[Current_language].text) do
If Languages[Current_language].text[I].text_name = Name then
begin
Result := Languages[Current_language].text[I].Text;
Exit;
end;
end;
Procedure Set_current_languagenumber(Language: String);
begin
Current_language := Getlangnumber(Language);
end;
Function GetLangNumber(Str: String): Byte;
Var
I: Byte;
begin
Result := Current_language;
For I := 1 to High(Languages) do
If Compare_strings(Languages[I].Language_Name, Str, False) then
Result := I;
If Result <> Current_language then
Exit;
For I := 1 to High(Languages) do
If Languages[I].Language_Name = '' then
begin
Result := I;
Exit;
end;
end;
Function Updatecomponents(Mainform: Tform;
New_language: String = ''): Boolean;
Var
S, Capt: String;
Lan_nr, I: Word;
Contrl: Tcomponent;
begin
S := New_language;
Lan_nr := Getlangnumber(Trim(S));
If Languages[Lan_nr].Component_count > 0 then
For I := 1 to Languages[Lan_nr].Component_count do
begin
S := Languages[Lan_nr].Components[I].Component_name;
Capt := Languages[Lan_nr].Components[I].Caption;
Contrl := Mainform.Findcomponent(S);
If Contrl is Tbutton then
(contrl as Tbutton).Caption := Capt;
end;
end;
Procedure LoadLNFfile(Filename: String);
Var
F: Textfile;
S: String;
Words: Array of String;
I: Byte;
Comp_count: Byte;
LAN_NR: Byte;
Lanname: String;
Typ: Cardinal;
Begin
Assignfile(F, Filename);
Reset(F);
For I := 1 to High(Languages) do
begin
Languages[I].Component_count := 0;
Languages[I].Text_count := 0;
Languages[I].Language_Name := '';
end;
Comp_count := 0;
Repeat
Readln(F, S);
replacetext(S, ' ', '#');
Replacetext(S, ';', ' ');
Setlength(Words, Count_words(S));
String_into_pieces(S, Words);
For I := 0 to High(Words) do
Replacetext(Words[I], '#', ' ');
If Words[0][1] + Words[0][2] = '//' then
Continue;
If Words[0][1] = '[' then
begin
lanname := Copy(Words[0], 2, Pos(Words[0], ']')-2);
Lan_nr := Getlangnumber(Lanname);
Languages[Lan_nr].Language_Name := Lanname;
Languages[Lan_nr].Component_count := 1;
Continue;
end;
If Words[1] = LNF_COMPONENT_STR then
Typ := LNF_COMPONENT_NR;
If Words[1] = LNF_TEXT_STR then
Typ := LNF_TEXT_NR;
Case Typ of
LNF_COMPONENT_NR: Begin
Inc(Languages[Lan_nr].Component_count);
Languages[Lan_nr].Components[Languages[Lan_nr].Component_count].Component_name := Words[0];
Languages[Lan_nr].Components[Languages[Lan_nr].Component_count].Caption := Words[2];
End;
LNF_TEXT_NR: Begin
Inc(Languages[Lan_nr].text_count);
Languages[Lan_nr].text[Languages[Lan_nr].text_count].Text_name := Words[0];
Languages[Lan_nr].text[Languages[Lan_nr].text_count].Text := Words[2];
End;
end;
until
Eof(F);
Closefile(F);
Current_language := 1;
end;
Bookmarks