Qt6 国际化(支持多语言特性)

一、参考链接

Qt中,软件多语言国际化翻译的方法与步骤 - 知乎 (zhihu.com)

QT 避坑指南:如何优雅的使用 QtCreator 格式化代码 - 墨天轮 (modb.pro)

二、Qt 国际化支持

1. Qt 项目(CMake)设置国际化支持_qt cmake 国际化-CSDN博客

#生成ts文件的文件夹
set(TS_DIR "${CMAKE_SOURCE_DIR}")

set(TS_FILES
    "${TS_DIR}/qt3_en_US.ts"
    #"${TS_DIR}/aidiapp.ts"
    #"${TS_DIR}/aidi_zh_CN.ts"
    #"${TS_DIR}/aidi_zh_TW.ts"
    #"${TS_DIR}/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()

 2. 在源代码和UI上,添加“中文字符串”;

3. 主界面菜单 -> 构建 -> 执行CMake

4. 修改 qt3_en_US.ts 文件,完成翻译

5. 在 Qt Creator 中的 Terminal 控制台中,执行:lrelease qt3_en_US.ts,生成或更新 'qt3_en_US.qm';

6. 在 Qt Creator 中,添加 qrc 资源文件,在资源文件中,添加前缀 “/i18n”,在前缀中,添加文件 “qt3_en_US.qm”;

7. 编译并运行程序即可;

代码:translator.load(":/i18n/" + baseName)

可能需要安装 VulkanSDK

注意:

也可以直接使用(不创建资源文件):

translator.load("qt3_en_US.qm") 

但需要保证正确生成 qt3_en_US.qm 

三、Qt 国际化后,按钮自动适配字符串长度

在 Qt 设计师中,设置 QPushButton 的 SizePolicy 水平策略属性为 Preferred 即可;

四、如何正确获取 “lupdate 需要的字符串”

  • tr(""):适用于 类内部;
  • QCoreApplication::translate:适用于 类外部

例如:

#define STR_Arch tr("进程架构") (这样 tr 调用出错)

也可以表示为:

#define STR_Arch QCoreApplication::translate("YourContext", "进程架构")

"YourContext" 应该被替换成一个合适的上下文名,这通常是与翻译字符串相关的类名。如果您不在类中,您可以使用任何适当的字符串来区分不同的翻译上下文。

五、CMakeLists.txt 末尾添加以下代码自动调用 lupdate

set(TS_FILES
    "./qt3_en_US.ts"
    # 其他 .ts 文件...
)

file(GLOB_RECURSE SOURCES "*.cpp" "*.h" "*.ui")

find_program(LUPDATE_EXECUTABLE lupdate)

if(NOT LUPDATE_EXECUTABLE)
    message(SEND_ERROR "lupdate tool not found")
endif()

foreach(_ts_file ${TS_FILES})
    execute_process(
        COMMAND ${LUPDATE_EXECUTABLE} ${SOURCES} -ts ${_ts_file}
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    )
endforeach()

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值