У меня 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
вручную для меня не вариант. Был бы очень признателен за вашу помощь. Хорошего дня.