需求:原项目使用vue-i18n实现国际化,通过xml中参数,在加载时选取相应语言包。希望在InnoSetUp中选取语言包后可以修改配置文件值,实现加载不同语言。 xml* language_type表示语言
<!-- 原先定义1为中文 2为英文 -->
<language_type>1</language_type>
Inno SetUp脚本中配置中英文语言
[Languages]
Name: "cs"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"
Name: "en"; MessagesFile: "compiler:Languages\English.isl"
Code中编写代码读取配置文件及修改节点
[Code]
function MyLangName(): String;
begin
Result := ActiveLanguage();
end;
//保存xml文件的语言
procedure SaveLan();
var
XMLFile: String; // xml路径
KeyName: String; // 语言节点名称
KeyValue: String; // 语言节点值
XMLDocument: Variant; // xml文档
rootNode: Variant; // xml根节点
lanNode: Variant; // 语言节点
begin
XMLFile := ExpandConstant('{app}\conf\') + '文件名.xml';// xml路径
KeyName := '';
KeyValue := MyLangName();
XMLDocument := CreateOleObject('MSXML2.DOMDocument');
XMLDocument.async := False;
XMLDocument.resolveExternals := False;
XMLDocument.load(XMLFile);// 加载
rootNode := XMLDocument.documentElement;
lanNode := rootNode.SelectSingleNode('language_type');// 语言节点
if 'cn' = KeyValue then
begin
lanNode.text:= 1; // set 语言
end
else if 'en' = KeyValue then
begin
lanNode.text:= 2; // set 语言 这里不是通过属性表示,而是节点值 '
end;
XMLDocument.Save(XMLFile);// 保存
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of ssPostInstall:
SaveLan();
end;
end;
以上参考网址