• Qt国际化翻译解决方案


    本文介绍Qt国际化翻译解决方案。
    Qt软件开发过程中,我们通常采用国际化的方式翻译界面上的内容,以应对修改软件语言的需求。比如,按钮上显示的文本,可以是中文也可以是英文,面对不同的人群,软件应具备快速切换语言的能力。本篇介绍一种便捷的开发以及使用的Qt国际化翻译解决方案。

    开发时,无论是控件上的文本还是在代码中设置的需要显示的text,都用英文表示:
    在这里插入图片描述
    维护一个translate.csv文件,按照键值对的方式存放要翻译的内容,比如:

    En,Zh
    OK,确认
    
    • 1
    • 2

    将源文本和要翻译成的文本按照键值对的形式存放在该csv文件中,左边是源文本,右边是要翻译的文本。
    Qt翻译时实际上是加载的qm文件:

    QApplication a(argc, argv);
    
    //国际化翻译
    QTranslator translator;
    translator.load("en_to_zh.qm", ":/new/prefix1/qm/");
    a.installTranslator(&translator);
    
    Widget w;
    w.show();
    
    return a.exec();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    因此,我们需要维护几个脚本,用于根据csv文件内容生成qm文件。
    在这里插入图片描述
    介绍一下几个脚本的作用:

    translate.bat 生成qm文件,并拷贝到相应目录
    translate-py3.py 读取csv文件,按照csv中翻译的映射关系,将翻译填到.ts文件中
    
    • 1
    • 2

    translate.bat脚本中需要配置Qt和Python的安装目录,脚本中用到Qt的翻译工具lupdate.exelrelease.exelupdate.exe会扫描pro文件,取出源文件中需要翻译的文本信息生成.ts文件,调用translate-py3.py读取csv文件中的信息,根据映射关系重新生成翻译后的.ts文件(.ts文件实则是一个xml格式的文件),lrelease.exe将翻译后的.ts文件生成成.qm文件供程序加载。
    来看一个翻译后的.ts文件:
    在这里插入图片描述
    对应下面这个例子:
    在这里插入图片描述
    QLabel中的文本通过代码设置:

    ui->label->setText(tr("cancel"));
    
    • 1

    这个例子中的csv文件:

    En,Zh
    confirm,确认
    cancel,取消
    
    • 1
    • 2
    • 3

    这样,在程序生成前,点击translate.bat脚本生成qm文件,程序中加载即可。
    翻译后效果:
    在这里插入图片描述
    为了方便,项目中可以包含csv文件和qm文件:
    在这里插入图片描述
    之后再重新生成qm文件后,脚本中直接拷贝覆盖掉原来的即可。
    这是翻译成中文,如果软件要使用韩语,直接修改csv中的翻译即可:

    En,Korean
    confirm,확인
    cancel,취소
    
    • 1
    • 2
    • 3

    重新调用脚本生成,并加载。效果:
    在这里插入图片描述
    是不是很方便~
    关于上述脚本具体是如何实现的,以及怎么使用,可以查看这个例子:
    https://gitee.com/gao-yuelong/qtdemo/tree/master/internationalization

  • 相关阅读:
    2022年最新青海机动车签字授权人模拟考试及答案
    Response handling between UVM Driver and Sequencer for Pipelined Protocols
    「学习笔记」AC 自动机
    5个小功能掌握正则表达式的使用
    目标检测算法——工业缺陷数据集汇总2(附下载链接)
    2023年云计算发展趋势:生活的智能未来
    阿桂天山的技术小结:Flask对Ztree树节点搜索定位
    RPA学习天地:企业级RPA设计器核心功能要包括哪些?
    【DesignMode】装饰者模式(Decorator pattern)
    微软研发“超级大脑“:Excel智商提高25.6%!
  • 原文地址:https://blog.csdn.net/gaoyuelon/article/details/127695601