Qt实现多国语言切换
2017-02-21 17:30
645 查看
新建项目
要想进行翻译的文字必须用tr()进行包裹,ui界面中的文字有设置是否进行翻译的选项,默认是选中的生成语言包
切换到所在的项目,输入lupdate test.pro -ts zh-CN.ts
其中test.pro是项目的名字,en.ts是你想生成的语言包的名字
项目中会多了一个ts文件
为了对文字进行翻译,你可以直接打开这个文件进行编辑,也可以用Qt安装目录下的linguist.exe打开进行编辑,LZ用linguist.exe编辑,看看文件发生了哪些变化,以后直接修改文件即可
LZ用的是Qt5.7,linguist.exe的位置是,仅供参考
D:\Qt5.7\5.7\mingw53_32\bin
编辑前
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.1"> <context> <name>MainWindow</name> <message> <location filename="mainwindow.ui" line="14"/> <source>MainWindow</source> <translation type="unfinished"></translation> </message> <message> <location filename="mainwindow.ui" line="27"/> <source>this is a demo to show language switch</source> <translation type="unfinished"></translation> </message> <message> <location filename="mainwindow.ui" line="40"/> <source>ok</source> <translation type="unfinished"></translation> </message> </context> </TS>
编辑后
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.1" language="zh_CN"> <context> <name>MainWindow</name> <message> <location filename="mainwindow.ui" line="14"/> <source>MainWindow</source> <translation type="unfinished">主窗口</translation> </message> <message> <location filename="mainwindow.ui" line="27"/> <source>this is a demo to show language switch</source> <translation type="unfinished">这是一个语言切换的例子</translation> </message> <message> <location filename="mainwindow.ui" line="40"/> <source>ok</source> <translation type="unfinished">确定</translation> </message> </context> </TS>
所以用软件翻译也只是给XML标签赋值,你可以直接赋值
在test.pro文件最后加上
TRANSLATIONS = zh-CN.ts
如果有多个语言包,中间用\分隔即可
TRANSLATIONS = en.ts \ zh-TW.ts
接着就是发布翻译了,输入下面即可
lrelease zh-CN.ts -qm zh-CN.qm
文件下多了一个qm文件
源码
mainwindow.h#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QTranslator> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); //语言切换的标志位 int type = 1; QTranslator myTranslator; private slots: //点击按钮实现语言切换 void on_okBtn_clicked(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_okBtn_clicked() { if (type) { myTranslator.load("../test/zh-CN.qm"); qApp->installTranslator(&myTranslator); ui->retranslateUi(this); type = 0; } else { qApp->removeTranslator(&myTranslator); ui->retranslateUi(this); type = 1; } }
main.cpp
#include "mainwindow.h" #include <QApplication> #include <QTranslator> #include <QDebug> int main(int argc, char *argv[]) { QApplication a(argc, argv); //如果想一开始就加载语言包,可以用下面的方法,但没想到卸载语言包的方法 /*QTranslator translator; bool flag; //我这里用的是相对路径,一开始就加载为英文 flag = translator.load("../test/zh-CN.qm"); if (flag) qDebug() << "加载成功"; a.installTranslator(&translator);*/ MainWindow w; w.show(); return a.exec(); }
源码下载
http://download.csdn.net/detail/zzti_erlie/9763762实现语言的切换
参考文献
[1]http://www.cnblogs.com/oloroso/p/4596740.html[2]http://blog.csdn.net/csf111/article/details/7752839
[3]http://blog.csdn.net/houqd2012/article/details/37660589
[4]http://blog.csdn.net/sinat_35523212/article/details/52348934
相关文章推荐
- QT实现多国语言切换
- QT实现多国语言的动态切换
- Qt 界面实现多国语言的切换实例
- Qt实现多国语言(即界面翻译)可实时进行切换
- Qt实现多国语言(即界面翻译)可实时进行切换
- Qt实现多国语言动态切换
- QT实现多国语言的动态切换
- QT实现多国语言的动态切换
- QT实现多国语言的动态切换
- Qt 界面实现多国语言的切换实例
- 程序实现多国语言的动态切换解决方案
- Struts实现多国语言切换
- QT实现多语言切换
- iOS中代码支持多国语言切换的实现(Xcode5+iOS7)
- C#实现多国语言的界面切换
- iOS中代码支持多国语言切换的实现(Xcode5+iOS7)
- iOS中代码支持多国语言切换的实现(Xcode5+iOS7)
- iOS中代码支持多国语言切换的实现(Xcode5+iOS7)
- QT实现语言切换
- Qt的国际化示例程序以及步骤--实现Qt程序的动态切换语言功能