1.我可以修改isl本地化文件吗?
如果您修改标准 *.isl 文件或创建您自己修改过的文件,一切由您自己决定。请务必记住,如果您修改标准的,它们可能会被您安装的新版本的 Inno Setup 更新。这可能是许多人建议仅在该[CustomMessages]
部分中创建条目的原因。
但是您当然可以创建一个单独的语言文件,您将与每个 Inno Setup 更新合并,或者更好,就像 Miral 建议的那样,在您自己的 *.isl 文件中指定您的自定义消息,然后在该部分的MessagesFile
参数中[Languages]
指定该文件位于逗号分隔的文件列表末尾:
[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl,compiler:YourEnMessages.isl"
Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl,compiler:YourNlMessages.isl"
作为MessagesFile
参数的参考状态:
当指定多个文件时,将按照指定的顺序读取它们,因此最后一个消息文件会覆盖先前文件中的任何消息。
因此,如果您只制作只有[CustomMessages]
部分的 *.isl 文件并以上述方式在脚本中指定它们,您将不会破坏任何内容,您将获得单独的可重用语言文件。这种自定义 *.isl 文件的结构可能与以下[CustomMessages]
部分完全一样:
[CustomMessages]
SomeCustomKey=Some custom value
...
如果您要在许多设置中重用这些自定义消息,则制作自己的语言文件可能对您更好。
2.如何从[代码]部分访问自定义消息?
通过使用CustomMessage
函数。例如这种方式:
...
[CustomMessages]
; the following key value pair can be moved to the *.isl file into the same
; named file section, if needed; as a downside of doing that you'll need to
; keep track of changes if you update Inno Setup itself
SomeCustomKey=Some custom value
[Code]
procedure InitializeWizard;
var
S: string;
begin
S := CustomMessage('SomeCustomKey');
MsgBox(S, mbInformation, MB_OK);
end;