我为Inno-Setup制作了一个自定义面板,我想要国际化。
我可以使用* .isl文件添加翻译密钥,还是必须使用[custommessages]?我如何访问[code]部分中的键。
非使用i18n的创新示例。
THX 汤姆
答案 0 :(得分:9)
的 1。我可以修改isl本地化文件吗?
如果你修改标准* .isl文件,或者创建你自己的修改过的文件,那就是你。请务必记住,如果您修改标准版本,则可能会通过您安装的新版Inno Setup进行更新。这可能是许多人建议仅在[CustomMessages]
部分创建条目的原因。
但是您当然可以创建一个单独的语言文件,您可以将其与每个Inno安装程序更新合并,或者更好,就像Miral建议的那样,在您自己的* .isl文件中指定自定义消息,然后在{{ 1 {} [Languages]
部分的参数在逗号分隔的文件列表末尾指定该文件:
MessagesFile
作为[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl,compiler:YourEnMessages.isl"
Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl,compiler:YourNlMessages.isl"
参数的参考状态:
当指定多个文件时,将按照它们的顺序读取它们 指定,因此最后一个消息文件会覆盖其中的任何消息 以前的文件。
因此,如果您只制作仅包含MessagesFile
部分的* .isl文件,并按照上述方式在脚本中指定它们,则不会破坏任何内容,您将获得单独的可重用语言文件( S)。此类自定义* .isl文件的结构可能看起来像[CustomMessages]
部分:
[CustomMessages]
如果要在许多设置中重复使用这些自定义消息,制作自己的语言文件可能会更好。
的 2。如何从[代码]部分访问自定义消息?
使用CustomMessage
功能。例如这样:
[CustomMessages]
SomeCustomKey=Some custom value
...
答案 1 :(得分:4)
@TLama提供的答案非常有用。我遇到了一个额外的问题,这与使用 自定义消息与params 有关。
定义自定义消息:
消息可能带有参数,从%1到%9。您可以重新排列参数的顺序(即在%1之前移动%2),并在需要时重复参数(即"%1 ...%1%2")。在带参数的消息上,使用两个连续的"%"要嵌入单个"%"的字符。 "%N"创造一个换行符。
例如:
[CustomMessages]
...
NameAndVersion=%1 version %2
...
然后,要在代码部分使用它,只需将FmtMessage函数与CustomMessage函数一起使用:
示例:强>
S := FmtMessage(CustomMessage('NameAndVersion'), ['My Program', '1.0']);
// S = 'My Program version 1.0'