【问题标题】:Load translation files to Pyqt5 application将翻译文件加载到 Pyqt5 应用程序
【发布时间】:2020-12-14 21:10:48
【问题描述】:

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

【问题讨论】:

    标签: python pyqt5 inno-setup


    【解决方案1】:

    你知道 Inno setup 总是会生成一个脚本,使用那个脚本。

    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 部分按顺序执行,因此更新如下:

    [Run]
    Filename: "{app}\setLanguage.EXE"; Parameters: "{language}"
    Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
    

    然后您可以从您的应用中读取用户选择的语言的 json 文件

    现在编译你的应用

    【讨论】:

    • 感谢您的回复,但我认为这不是我问题的答案。我想要做的是从使用 Inno 设置软件构建的设置文件中设置应用程序的语言。我想根据该选择加载翻译文件。我曾经在应用程序中使用菜单栏来加载它,但我现在想从设置中选择应用程序的语言。
    • 请@IkramRomdhani 我已经更新了答案
    • 您的解决方案会奏效。但是为这个任务创建新的 CLI 应用程序是大材小用。 Inno Setup 可以直接创建文本文件。见Write serial to file using Inno Setup
    • 好的,@MartinPrikryl。
    猜你喜欢
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2013-07-10
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多