Вы можете использовать препроцессор для одновременной генерации записей [Languages]
и [Registry]
. Препроцессор имеет функцию ReadIni
, которую вы можете использовать для чтения LanguageID
из файлов .isl
.
#define AddLanguage(Name, File) \
"[Languages]" + NewLine + \
"Name: " + Name + "; MessagesFile: ""compiler:" + File + """" + NewLine + \
"[Registry]" + NewLine + \
"Root: HKLM; Subkey: ""SOFTWARE\Company\Office\Client""; ValueType: dword; " + \
"ValueName: ""LocaleID""; " + \
"ValueData: " + ReadIni(CompilerPath + File, "LangOptions", "LanguageID") + "; " + \
"Languages: " + Name + NewLine
#emit AddLanguage("en", "Default.isl")
#emit AddLanguage("ru", "Languages\Russian.isl")
#emit AddLanguage("uk", "Languages\Ukrainian.isl")
, которая сгенерирует такой код (перенос строк и для удобства чтения добавляются пустые строки):
[Languages]
Name: en; MessagesFile: "compiler:Default.isl"
[Registry]
Root: HKLM; Subkey: "SOFTWARE\Company\Office\Client"; ValueType: dword; \
ValueName: "LocaleID"; ValueData: $0409; Languages: en
[Languages]
Name: ru; MessagesFile: "compiler:Languages\Russian.isl"
[Registry]
Root: HKLM; Subkey: "SOFTWARE\Company\Office\Client"; ValueType: dword; \
ValueName: "LocaleID"; ValueData: $0419; Languages: ru
[Languages]
Name: uk; MessagesFile: "compiler:Languages\Ukrainian.isl"
[Registry]
Root: HKLM; Subkey: "SOFTWARE\Company\Office\Client"; ValueType: dword; \
ValueName: "LocaleID"; ValueData: $0422; Languages: uk
Добавьте SaveToFile
в конец сценария , чтобы увидеть сгенерированный код.