Как я могу переписать предопределенные сообщения для WelcomePage на разных языках в Inno Setup?

У меня 3 языка, и мне нужно изменить AppName в соответствии с выбранным языком. Я написал это:

[Setup]
AppName={code:GetMyAppName}

[Code] 
function GetMyAppName(param : String) : String;
begin
  case ActiveLanguage of
    'en': Result := 'AB Office Client';
    'ru': Result := 'Клиент АБ Офис';
    'ua': Result := 'Клієнт АБ Офіс';
  end;   
end;

И здесь у меня есть раздел [Messages], зависящий от языка:

[Messages]
en.WelcomeLabel1=Welcome to [APPNAME] Setup program. This program will install [APPNAME] on your computer.
ru.WelcomeLabel1=Вас приветствует программа установки [APPNAME] Эта программа установит [APPNAME] на Ваш компьютер.
ua.WelcomeLabel1=Вас вітає програма встановлення [APPNAME]. Ця програма встановить [APPNAME] на Ваш комп'ютер.

У меня вопрос: как передать результат функции GetMyAppName в [APPNAME]? Я мог бы сделать это, вставив ранее определенную константу, например {#AppName}, но я не могу использовать функции из раздела [Code] с директивами препроцессора. Тот же вопрос возникает, когда я вместо этого использую [CustomeMessages]. Нравится:

[Setup]
AppName={cm:AppName}

[CustomMessages]
en.AppName=AB Office Client
ru.AppName=Клиент АБ Офис
ua.AppName=Клієнт АБ Офіс

Кроме того, я знаю, что есть некоторые аргументы %1 и %2 в разделе [Messages], но я понятия не имею, как их использовать. Для меня аргумент %1 и %2 просто не передается на AppName и AppVersion соответственно. Они просто остаются как %1 и %2. И, наконец, изменение файла .isl вручную для меня не вариант. Был бы очень признателен за вашу помощь. Хорошего дня.


person JConstantine    schedule 13.03.2020    source источник


Ответы (1)


Значения по умолчанию:

WelcomeLabel1=Welcome to the [name] Setup Wizard
WelcomeLabel2=This will install [name/ver] on your computer.%n%nIt is recommended that you close all other applications before continuing.

Так что просто следуйте этому - используйте в своих переводах заполнители [name] и [name/ver].


Если вам нужна другая настройка, см. Могу ли я использовать файлы .isl для сообщений с директивами препроцессора в Inno Setup? или Полная поддержка препроцессора в языковых файлах Inno Setup (isl).

person Martin Prikryl    schedule 13.03.2020