Windows系统下如何允许用户选择Qt Installer的安装语言?
Qt Installer Framework(简称QIFW)在Windows平台下完全支持自主选择安装界面显示语言,无需修改系统语言设置,既可以通过启动参数快速切换,也可以通过内置脚本实现安装包内的手动语言选择功能,所有方案都能同时覆盖主界面控件文本和许可协议的显示。
方案1:启动参数指定(零修改快速切换)
QIFW原生预留了语言指定的启动参数,不需要对安装包做任何修改,直接在启动安装包时追加--lang参数加对应语言代码即可,常用语言代码如下:
- 简体中文:
zh_CN - 英文(美国):
en_US - 繁体中文(台湾):
zh_TW - 日文:
ja_JP - 韩文:
ko_KR
比如要强制让Setup.exe以英文启动,在命令行执行如下命令即可:Setup.exe --lang en_US
这个方法适合临时切换语言的场景,也可以通过给安装包创建带参数的快捷方式,分发给对应语言的用户使用。
方案2:控制脚本实现安装内语言选择(最灵活,满足交互选择需求)
脚本修改的方式完全可行,QIFW提供了直接切换语言的脚本接口,可以在安装向导加载前插入语言选择交互,用户选完后自动加载对应语言的所有文本(包括许可协议)。
具体操作步骤:
- 准备需要支持的语言对应的QIFW翻译文件,这些文件默认存放在QIFW安装路径下的
translations目录,命名格式为qtifw_<语言代码>.qm,把需要用到的文件复制到你的安装包构建工程目录下。 - 在安装包配置文件
config.xml中引入所有翻译文件,示例配置:
<Installer> <!-- 其他基础配置省略 --> <Translations> <Translation>translations/qtifw_zh_CN.qm</Translation> <Translation>translations/qtifw_en_US.qm</Translation> <Translation>translations/qtifw_ja_JP.qm</Translation> </Translations> <!-- 引入控制脚本 --> <ControlScript>scripts/control.bs</ControlScript> </Installer>
- 编写控制脚本
control.bs,在Controller构造函数(向导加载前最早执行的位置)加入语言选择逻辑,示例代码:
function Controller() { // 弹出语言选择框 var btnIndex = QMessageBox.question("语言选择", "请选择安装界面使用的语言:\nPlease select your preferred language:", ["简体中文", "English", "日本語"], 0, 0); var langCode; switch(btnIndex) { case 0: langCode = "zh_CN"; break; case 1: langCode = "en_US"; break; case 2: langCode = "ja_JP"; break; default: langCode = "en_US"; } // 调用核心接口切换全局语言 installer.setDefaultLanguage(langCode); }
重新打包生成的安装包启动时,会首先弹出语言选择框,用户选择后整个安装流程的所有文本都会自动切换到对应语言,不会再跟随系统默认语言。
注意:
installer.setDefaultLanguage()必须在向导页面加载前调用,也就是只能放在Controller构造函数中执行,如果放到页面加载完成后的回调里,会出现部分文本已经按系统语言加载、切换不彻底的问题。
方案3:配置固定默认语言(无交互场景用)
如果不需要用户手动选择,只是想让安装包固定使用某一种语言、不跟随系统语言,直接在config.xml中加DefaultLanguage配置指定语言代码即可:
<Installer> <!-- 其他基础配置省略 --> <DefaultLanguage>zh_CN</DefaultLanguage> </Installer>
配置后安装包启动会默认加载指定语言,只有当对应翻译文件缺失时才会回退读取系统语言。
内容的提问来源于stack exchange,提问作者JenyaKh

