将 Inno Setup 安装程序语言映射到要存储在 INI 文件中的数字代码
Map Inno Setup installer language to numeric codes to be stored in an INI file
我想将 Inno Setup 安装程序语言映射到一些数字代码。
代码应存储到 INI 文件中,如下所示:
[ini]
FileName: "{app}\lang.ini"; Section: "General"; Key: "language"; \
String: "{code:GetLanguateID}";
以下数字对应的语言:
英语:31
日语: 59
德语: 42
法语: 37
意大利语: 58
韩语: 66
西班牙语: 111
葡萄牙语:91
只需将 {language}
constant 的值与语言名称和 return 对应的(数字)值进行比较:
function GetLanguateID(Param: string): string;
begin
case ExpandConstant('{language}') of
'english': Result := '31';
'japanese': Result := '59';
'german': Result := '42';
// etc...
else RaiseException('Unexpected language');
end;
end;
您也可以在没有任何 Pascal 脚本代码的情况下实现同样的效果:
[INI]
FileName: "{app}\lang.ini"; Section: "General"; Key: "language"; \
String: "31"; Languages: english
FileName: "{app}\lang.ini"; Section: "General"; Key: "language"; \
String: "59"; Languages: japanese
FileName: "{app}\lang.ini"; Section: "General"; Key: "language"; \
String: "42"; Languages: german
; etc ...
为避免重复,您可以使用预处理器:
[INI]
#define MapLanguage(Language, Code) \
"FileName: ""{app}\lang.ini""; Section: ""General""; Key: ""language""; " + \
"String: """ + Code + """; Languages: " + Language
#emit MapLanguage("english", "31")
#emit MapLanguage("japanese", "59")
#emit MapLanguage("german", "42")
; etc ...
我想将 Inno Setup 安装程序语言映射到一些数字代码。
代码应存储到 INI 文件中,如下所示:
[ini]
FileName: "{app}\lang.ini"; Section: "General"; Key: "language"; \
String: "{code:GetLanguateID}";
以下数字对应的语言:
英语:31
日语: 59
德语: 42
法语: 37
意大利语: 58
韩语: 66
西班牙语: 111
葡萄牙语:91
只需将 {language}
constant 的值与语言名称和 return 对应的(数字)值进行比较:
function GetLanguateID(Param: string): string;
begin
case ExpandConstant('{language}') of
'english': Result := '31';
'japanese': Result := '59';
'german': Result := '42';
// etc...
else RaiseException('Unexpected language');
end;
end;
您也可以在没有任何 Pascal 脚本代码的情况下实现同样的效果:
[INI]
FileName: "{app}\lang.ini"; Section: "General"; Key: "language"; \
String: "31"; Languages: english
FileName: "{app}\lang.ini"; Section: "General"; Key: "language"; \
String: "59"; Languages: japanese
FileName: "{app}\lang.ini"; Section: "General"; Key: "language"; \
String: "42"; Languages: german
; etc ...
为避免重复,您可以使用预处理器:
[INI]
#define MapLanguage(Language, Code) \
"FileName: ""{app}\lang.ini""; Section: ""General""; Key: ""language""; " + \
"String: """ + Code + """; Languages: " + Language
#emit MapLanguage("english", "31")
#emit MapLanguage("japanese", "59")
#emit MapLanguage("german", "42")
; etc ...