使用InnoSetUp实现根据选择语言修改xml中配置文件

564 阅读1分钟

需求:原项目使用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;


以上参考网址