1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

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

Тема в разделе "Inno Setup", создана пользователем Tolyak26, 13 апр 2014.

  1. Ветеран

    Регистрация:
    28 июн 2012
    Сообщения:
    72
    Симпатии:
    2
    Я сделал в своем скрипте кнопку для быстрой смены языка в инсталляторе. Встал в ступор на том моменте, когда нужно сделать смену языка для InfoBeforeFile и MessagesFile. Кто сможет помочь с этим?

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

    Вложения:

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

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

    Вложения:

    • Sample.rar
      Размер файла:
      1,1 КБ
      Просмотров:
      17
    Tolyak26 нравится это.
  3. Ветеран Проверенный

    Регистрация:
    18 июн 2011
    Сообщения:
    681
    Симпатии:
    485
    Код ( (Unknown Language)):

    [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;
     
    Последнее редактирование: 13 апр 2014
    Tolyak26 нравится это.
  4. Ветеран

    Регистрация:
    28 июн 2012
    Сообщения:
    72
    Симпатии:
    2
    С InfoBeforeFile всё понятно. Спасибо. Но вот как быть с *.isl файлами, т.е. с MessageFile? Похожим образом не получится сделать?
     
  5. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    514
    Симпатии:
    601
    Пол:
    Мужской
    vint56
     
  6. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    514
    Симпатии:
    601
    Пол:
    Мужской
    Нет, с дефолтными языками так не получится. То есть можно конечно подгрузить свой файл и сменить caption у всех статиков, кнопок и т.д., но это уже не относится к вопросу "Быстрая смена языка для InfoBeforeFile, MessagesFile", а это вопрос "Как сделать быструю смену языка" :)
     
  7. Ветеран

    Регистрация:
    28 июн 2012
    Сообщения:
    72
    Симпатии:
    2
    Жаль. Придется все таки каждую надпись менять отдельно. И на этом спасибо.
     
  8. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    514
    Симпатии:
    601
    Пол:
    Мужской
    Ну в принципе все так и делают :)
     

Поделиться этой страницей