Qt 项目(CMake)支持多国语言(2024/05)

参考:Qt 项目(CMake)设置国际化支持

1.在工程手动创建languages文件夹

在这里插入图片描述

2.修改CMakeLists.txt

set(TS_FILES
    "${CMAKE_SOURCE_DIR}/languages/aidi_zh_CN.ts"
    "${CMAKE_SOURCE_DIR}/languages/aidi_en_US.ts"
)

# 模拟更新和发布的命令代码
find_program(LUPDATE_EXECUTABLE lupdate)
find_program(LRELEASE_EXECUTABLE lrelease)

# 生成ts和qm文件
foreach(_ts_file ${TS_FILES})
    execute_process(
        COMMAND ${LUPDATE_EXECUTABLE} -recursive ${CMAKE_SOURCE_DIR} -ts ${_ts_file})
    execute_process(
        COMMAND ${LRELEASE_EXECUTABLE} ${_ts_file})
endforeach()

3.在qml上随便添加一下文字内容

例如:

import QtQuick 2.15
import QtQuick.Window 2.15

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    Column {
        id: column
        y: 20
        spacing: 20//子项之间的间距
        Text {
            id:sfsd
            text: qsTr("苹果")
        }

        Text {
            text: qsTr("香蕉")
        }

        Text {
            text: qsTr("西瓜")
        }
    }
}

文本需要使用qsTr( )包裹

4.执行CMake

在这里插入图片描述

5.把.ts.qm添加到项目中

在这里插入图片描述

6.翻译成英文的示例

选中.ts文件,使用Qt语言家打开
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.在main里面加载语言文件

#include <QTranslator>
    QTranslator qtTranslator;
    qtTranslator.load(":/languages/aidi_en_US.qm");//英文
    // qtTranslator.load(":/languages/aidi_zh_CN.qm");//中文
    app.installTranslator(&qtTranslator);

效果
在这里插入图片描述
在这里插入图片描述

8.启动软件自动获取电脑的语言

    QLocale::Language lab = QLocale::system().language();
    if(QLocale::Chinese == lab)
    {
        qDebug() << "电脑系统用的是中文n" ;
    }
    else if(QLocale::English== lab){
        qDebug() << "电脑系统用的是英文n" ;
    }

遗留问题

我只是实现了在main()函数里加载语言,

如果在程序中修改语言->记录语言配置->需要将程序重启->再加载相应的语言文件

如何实现修改语言,可以立马生效的方法,知道的欢迎在评论区留言!

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值