QT5 CMAKE工程忘记添加翻译文件怎么办?【日积月累计划】

背景介绍

Qt5新的版本开始支持cmake编译方式。最近在做个界面,做到一半,发现工程开始的时候应该添加的翻译选项没有了,我总不能重新做吧?该怎么办?

Solution 1:重新建立一个工程

方法概述

这个方法就是在开始的时候重新建立一个工程,在开始的时候记得添加翻译文件。然后参考根据你的工程cmake文件,修改这个文件。然后将这个cmake文件拿来替换。注意在修改的时候做好比较和备份。

评价

有可能遗漏,而且繁琐。但对于初学者不失为一种很好的尝试。这样可以让你更好的理解cmake文件。

Solution 2

方法说明

这个方法时这次的重点。基本上分以下几步:

  • 2-1 修改find_package,添加LinguistTools
    修改之后类似如下:
    find_package(Qt5 COMPONENTS Widgets LinguistTools REQUIRED)
    
  • 2-2 确定需要翻译的语言,添加翻译文件别名
    比如我们将TS_FILES作为所有需要的语言别名,在里面添加所需要的语言。请注意这里的ts文件的命名规则,在名称末尾带上语言标记。
set(TS_FILES Galaxy_QR_GUI_zh_CN.ts)

(这样的目的便于添加和修改目标翻译语言)

  • 2-3 修改文件包含路径,添加${TS_FILES}
if(ANDROID)
    add_library(QtQuick_test01 SHARED
      xxx.cpp
      xxx.qrc
      xxx.h
      ${TS_FILES}
    )
else()
    add_executable(QtQuick_test01
      xxx.cpp
      xxx.qrc
      xxx.h
      ${TS_FILES}
    )
endif()
  • 2-4 在endif后面添加qt5_create_translation
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
  • 2-5 重新构建,用linguist工具修改ts文件

评价

这种方法看着复杂,但是直接了当,快速方便

参考资料

  1. https://doc.qt.io/qt-5/qtlinguist-cmake-qt5-create-translation.html
  2. https://doc.qt.io/qt-5/linguist-manager.html#lupdate
  3. https://blog.csdn.net/shengzhadon/article/details/52173580
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
http://blog.csdn.net/yulinxx/article/details/43260203 ------------------------------------------ C++ 国际化!!!!! 创建一个空白的Qt工程 添加一个main.cpp #include #include #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv) QWidget* pWnd = new QWidget(); QPushButton* pBtn = new QPushButton(QPushButton::tr("Test Translate")) QVBoxLayout* pVlayout = new QVBoxLayout(); pVlayout->addWidget(pBtn) pWnd->setLayout(pVlayout); pWnd->show(); return a.exec(); } 即可运行起来。。。。 此工程中,只有按钮上有文字。。。运行如下图示: 在工程中加入: TRANSLATIONS += testTrans_en.ts (ts文字名可随意取) 然后执行: Tools -> External -> Linguist -> Update Translations(lupdate) 提示完成: /usr/local/Qt5.4.0/5.4/gcc_64/bin/lupdate" finished 在工程中,可以发现多了一个 testTrans_en.ts 文件,此文件可用文本编辑器打开进行查看,如: QPushButton Test Translate 此步骤是将工程中的文字(加tr等包含的文字)进行提取到ts文件中 接下来,在终端运行 x@x:~$ linguist 打开 Qt Linguist 翻译工具,对文字进行逐个翻译并保存 在工程中再执行: Tools -> External -> Linguist -> Release Translations(lrelease) 结果提示:/usr/local/Qt5.4.0/5.4/gcc_64/bin/lrelease" finished 在工程中,可以发现多了一个 testTrans_en.qm文件,此文件为二进制格式文件,即我们最终使用的翻译文件 然后添加Qt资源,将testTrans_en.qm添加进来 修改main.cpp文件,将翻译文件添加进来,最终执行 #include #include #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); QTranslator qtTranslator; qtTranslator.load(":/translate/testTrans_en.qm") a.installTranslator(&qtTranslator); QWidget* pWnd = new QWidget(); QPushButton* pBtn = new QPushButton(QPushButton::tr("Test Translate")) QVBoxLayout* pVlayout = new QVBoxLayout(); pVlayout->addWidget(pBtn) pWnd->setLayout(pVlayout); pWnd->show() return a.exec() } 最终执行结果:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值