Inno设置i18n用于自定义面板

时间:2013-07-11 07:14:03

标签: internationalization installation inno-setup

我为Inno-Setup制作了一个自定义面板,我想要国际化。

我可以使用* .isl文件添加翻译密钥,还是必须使用[custommessages]?我如何访问[code]部分中的键。

非使用i18n的创新示例。

THX 汤姆

2 个答案:

答案 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'