Вопрос Быстрая смена языка для InfoBeforeFile, MessagesFile

Tolyak26

Новичок
Я сделал в своем скрипте кнопку для быстрой смены языка в инсталляторе. Встал в ступор на том моменте, когда нужно сделать смену языка для InfoBeforeFile и MessagesFile. Кто сможет помочь с этим?

Если кто возьмется и понадобится скрипт, отправлю его в ЛС.
 

Вложения

YURSHAT

Тех. админ
Администратор
Tolyak26,
Да вроде это несложно. При переключении языка читаете в переменную файл соответствующего RTF через функцию LoadStringFromFile и загружаете содержимое переменной в InfoBeforeMemo
Код:
...
var
  S: AnsiString;
begin
  LoadStringFromFile(ExpandConstant('{tmp}\SomeFile.rtf'), S)
  WizardForm.InfoBeforeMemo.RTFText := S;
...
 

Вложения

vint56

Ветеран
Проверенный
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
InfoBeforeFile=ReadMeRu.rtf

[Files]
Source: ReadMeRu.rtf; DestDir: {tmp}
Source: ReadMeEn.rtf; DestDir: {tmp}

[Code]
var
LanguageChangeButton: TNewButton;
S: AnsiString;

procedure LangClick(Sender : TObject);
begin
case TButton(Sender).Tag of
0: begin
TButton(Sender).Tag := 1;
TButton(Sender).Caption := 'Rus';
///и т.д. на англ
LoadStringFromFile(ExpandConstant('{tmp}\ReadMeEn.rtf'), S);
WizardForm.InfoBeforeMemo.RTFText := S;
end;
1: begin
TButton(Sender).Tag := 0;
TButton(Sender).Caption := 'Eng';
///и т.д. на рус
LoadStringFromFile(ExpandConstant('{tmp}\ReadMeRu.rtf'), S);
WizardForm.InfoBeforeMemo.RTFText := S;
end;
end;
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('ReadMeRu.rtf');
ExtractTemporaryFile('ReadMeEn.rtf');
LanguageChangeButton := TNewButton.Create(WizardForm);
with LanguageChangeButton do
begin
Parent := WizardForm;
SetBounds(ScaleX(8),ScaleY(325),ScaleX(35),ScaleY(23));
Caption := 'Eng';
OnClick := @LangClick;
end;
end;
 
Последнее редактирование:

Tolyak26

Новичок
С InfoBeforeFile всё понятно. Спасибо. Но вот как быть с *.isl файлами, т.е. с MessageFile? Похожим образом не получится сделать?
 

YURSHAT

Тех. админ
Администратор
vint56
 

YURSHAT

Тех. админ
Администратор
Но вот как быть с *.isl файлами, т.е. с MessageFile? Похожим образом не получится сделать?
Нет, с дефолтными языками так не получится. То есть можно конечно подгрузить свой файл и сменить caption у всех статиков, кнопок и т.д., но это уже не относится к вопросу "Быстрая смена языка для InfoBeforeFile, MessagesFile", а это вопрос "Как сделать быструю смену языка" :)
 

Tolyak26

Новичок
Жаль. Придется все таки каждую надпись менять отдельно. И на этом спасибо.
 
Сверху