环境
系统版本:ubuntu
Qt版本:Qt 5.12
开始
步骤1:先编写一段Qt代码
如下,这个意思就是创建一个Qlabel。其内容 要写成 tr("hello111"),tr(),这个大家可以当成是一个翻译的函数,里面“hello111”当成是一个标签,这个再没有加载语言包的时候,QLabel直接显示的就是“hello111”,如果加载了语言包就显示是,语言包中对应的内容。
QLabel* lab = new QLabel(this);
lab->setText(tr("hello111"));
步骤2:生成.ts文件
.ts文件是用qt的 languist 工具先制作好的,里面存放着,代码中标签所对应的内容。这个标签就是步骤1中的“hello111”。
打开.pro文件,加上一段代码,保存。其中的 en.ts 和 cn.ts 名字根据项目自己修改。
TRANSLATIONS = en.ts \
cn.ts
生成.ts文件,点击菜单栏,工具-》外部-》linguist-》更新翻译(lupdata),这时候在项目目录下就会出现en.ts 和 cn.ts两个文件了。
步骤3:编辑 .ts 文件
用Qt自带的 languist 工具,打开上面的文件,如果languist这个工具找不到,就重新安装下。打开之后如下图
辑完之后,保存退出。
步骤4:生成.qm文件
qm是qt的语言文件。用qt的languist工具先制作好ts文件,再生成qm文件,再在qt程序里面加载qm文件即可实现国际化
QM文件是QT中translate类进行读取的源文件(英译中的翻译文件),其代码是不可读懂的。
生成.qm文件,点击菜单栏,工具-》外部-》linguist-》发布翻译(lrelease),这时候在项目目录下就会出现en.qm 和 cn.qm两个文件了。
这个时候记住这两个文件的路径,我案例中的路径是
/home/leo/Demo/multiLanguage/cn.qm
/home/leo/Demo/multiLanguage/en.qm
步骤5:加载语言包
找到步骤1中的QLabel,添加代码
QTranslator translator;
translator.load("/home/leo/Demo/multiLanguage/cn.qm");
QApplication::installTranslator(&translator);
QLabel* lab = new QLabel(this);
lab->setText(tr("hello111"));
这样当执行到这段代码的时候,QLabel显示的就是cn.qm中的翻译内容,我这边是中文翻译,所以显示的是如下图:
上面两图,图1,是翻译之前的原始内容,图二是点击cn这个按钮之后,翻译之后显示的内容。
结束...