To avoid a performance problem on Win98 I was recommended to use SIB files instead of SIL files. To convert my existing SIL files to SIB files I do the following in SILEditor:
1) Create new SIL file
2) Merge with existing SIL file
3) Export to CSV
4) Create new SIB
5) Import CSV file
6) Save SIB file
When I use the new SIB file *no* form caption is translated although the translation is in the file.
Please let me know how to fix this - I need to release new translated versions of my product asap as it's almost useless on some win98 PCs as it is now.
Regards,
Brian
SIB files ignore form caption
There was a bug in SICOMP.PAS file which will be fixed in next release. In case you need it fixed now you may modify source as following:
in SICOMP.PAS line#5221 insert the following code:
if ST in [stCaptions, stHints, stFonts, stCharsets] then
for J := 1 to Lst1.Count - 1 do
if AnsiPos(AComp.Owner.ClassName + char(AComp.LangDelim), Lst1[J]) = 1 then
begin
Lst1.Move(J, 0);
Break;
end;
And re-build the TsiLang package.
Hope this helps.
in SICOMP.PAS line#5221 insert the following code:
if ST in [stCaptions, stHints, stFonts, stCharsets] then
for J := 1 to Lst1.Count - 1 do
if AnsiPos(AComp.Owner.ClassName + char(AComp.LangDelim), Lst1[J]) = 1 then
begin
Lst1.Move(J, 0);
Break;
end;
And re-build the TsiLang package.
Hope this helps.
Igor,
it doesn't seem to work
for ST := Low(TStringsType) to High(TStringsType) do
begin
Lst := SI.GetPropListByType(ST);
Lst1 := AComp.GetPropListByType(ST);
if (Lst1 <> nil) and (Lst <> nil) then
Lst1.Assign(Lst);
(*FIX INSERTED HERE*)
if ST in [stCaptions, stHints, stFonts, stCharsets] then
for J := 1 to Lst1.Count - 1 do
if AnsiPos(AComp.Owner.ClassName + char(AComp.LangDelim), Lst1[J]) = 1 then
begin
Lst1.Move(J, 0);
Break;
end;
end;
Brian
it doesn't seem to work
![Sad :(](./images/smilies/icon_sad.gif)
for ST := Low(TStringsType) to High(TStringsType) do
begin
Lst := SI.GetPropListByType(ST);
Lst1 := AComp.GetPropListByType(ST);
if (Lst1 <> nil) and (Lst <> nil) then
Lst1.Assign(Lst);
(*FIX INSERTED HERE*)
if ST in [stCaptions, stHints, stFonts, stCharsets] then
for J := 1 to Lst1.Count - 1 do
if AnsiPos(AComp.Owner.ClassName + char(AComp.LangDelim), Lst1[J]) = 1 then
begin
Lst1.Move(J, 0);
Break;
end;
end;
Brian