У меня есть 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=Клієнт АБ Офіс
Кроме того, я знаю, что в разделе [Messages]
есть некоторые аргументы %1
и %2
, но я понятия не имею, как их использовать. Для меня аргументы %1
и %2
просто не будут перенесены в AppName
и AppVersion
соответственно. Они просто остаются как %1
и %2
. И, наконец, изменение файла .isl
вручную - не вариант для меня. Буду очень признателен за вашу помощь. Хорошего дня.