我有3种语言,所以我写这个:
Root: HKLM; Subkey: "SOFTWARE\Company\Office\Client"; ValueType: dword; ValueName: "LocaleID"; ValueData: "?"; Languages: en
Root: HKLM; Subkey: "SOFTWARE\Company\Office\Client"; ValueType: dword; ValueName: "LocaleID"; ValueData: "?"; Languages: ru
Root: HKLM; Subkey: "SOFTWARE\Company\Office4\Client"; ValueType: dword; ValueName: "LocaleID"; ValueData: "?"; Languages: ua
在ValueData字段中,我必须放置相应的LanuageID。我可以手动输入这些数字,但是我想知道是否有一种方法可以从其名称或名称中提取LanguageID。
您可以使用preprocessor同时生成[Languages]
和[Registry]
条目。预处理器具有ReadIni
function,可用于从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
查看生成的代码。