Python 将翻译文件加载到Pyqt5应用程序

Python 将翻译文件加载到Pyqt5应用程序,python,pyqt5,inno-setup,Python,Pyqt5,Inno Setup,我正在使用Python3.6和PyQt5开发一个桌面应用程序。在使用Pyinstaller编译应用程序之后,我打算使用Inno setup创建一个安装文件。该软件使我们有机会在运行安装文件时选择应用程序的语言。我想知道如何根据该选择加载翻译文件(.qm文件),谢谢。您知道Inno安装程序总是生成脚本,请使用该脚本 Inno安装程序具有任务、组件、运行和语言选项。对此,您只需要运行和语言选项 inno setup{language}常量返回用户选择的语言 您应该创建一个微型cli,接收用户从inn

我正在使用Python3.6和PyQt5开发一个桌面应用程序。在使用Pyinstaller编译应用程序之后,我打算使用Inno setup创建一个安装文件。该软件使我们有机会在运行安装文件时选择应用程序的语言。我想知道如何根据该选择加载翻译文件(.qm文件),谢谢。

您知道Inno安装程序总是生成脚本,请使用该脚本

Inno安装程序具有任务、组件、运行和语言选项。对此,您只需要运行和语言选项

inno setup
{language}
常量返回用户选择的语言

您应该创建一个微型cli,接收用户从inno安装程序选择的语言,然后通过创建json文件或数据库文件来设置应用程序的语言。 然后,您的应用程序从json读取信息并相应地加载.qm文件

也许您将调用您的微型cli setLanguage,在其中接收将传递参数的语言。因此,您可能会有以下内容:

import sys
import json

if (sys.argv) > 1:
    with open('settings.json', 'w') as fh:
        json.dump('{"language": "'+sys.argv[1]+'"}', fh)
然后在Inno设置脚本中,由于运行部分按顺序执行,请按如下方式更新它:

[Run]
Filename: "{app}\setLanguage.EXE"; Parameters: "{language}"
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
然后,您可以从应用程序中读取用户所选语言的json文件


现在编译你的应用程序

谢谢你的回答,但我认为这不是我问题的答案。我想做的是从使用Inno安装软件构建的安装文件中设置应用程序的语言。我想根据这个选择加载翻译文件。我以前在应用程序中使用菜单栏来加载它,但现在我想从安装程序中选择应用程序的语言。请@IkramRomdhani我已经更新了答案您的解决方案可以工作。但是,为这项任务创建新的CLI应用程序是一项过火的工作。Inno安装程序可以直接创建文本文件。看,好吧,@MartinPrikryl。