Qt作为跨平台的开发工具,早已应用到各行各业的软件开发中,也更多的应用到一些进出口软件或者一些出口设备的软件中,这就需要大量的多语种处理。
今天讲讲,Qt开发的程序怎么做多语言处理。就是说,你设置中文,就中文显示;设置英语就英文显示,设置繁体就繁体显示,设置法语就显示法语等。
开发环境(其实多语种这块跟环境没太大关系):win10,Qt.5.12.10
下文例子已经上传Qt语言家实现多语言切换
一.先用QtCreator创建一个简单的桌面程序
1.工程就随便命名“LanguageTest”,其他默认,先创建一个测试工程。
2.在设计师界面,移除掉菜单栏和状态栏等乱七八糟的,编译一下,确保初始的工程正常。
3.现在我添加两个QLabel标签label1,和label2用于显示文字,两个按钮bt_CN和bt_EN用于语言切换。
4.工程文件.pro添加语言配置
#语言包,ts语言文件放置在工程目录下的“translate”文件夹中,可以根据需要增加替他语种的ts,注意这里的.ts文件名称是你自己命名的,自己记住那个语言对应哪个文件即可,一般习惯上使用各语种的简写,后续载入对应的qm语言文件做到对应正确就行。
TRANSLATIONS += \
translate/LanguageTest_cn.ts \
translate/LanguageTest_en.ts
4.使用Qt语言家生成ts语言文件
在QtCreator的菜单栏中,点击 “工具”->“外部”->“Qt语言家”->“更新翻译”,会在“translate”文件夹中生成中文和英语各自的.ts文件。
5.使用Qt的Linguist工具来编辑语言库
根据你程序以后运行的环境(下图中可以看到Linguist工具有好几个,32位的,64位的,MSVC的,MinGW的),你的程序是64位的还是32位的,使用的编译器是什么,根据这些去选择对应环境的Linguist工具打开。
打开语言家工具后,点击“文件”->“打开”,找到测试程序工程目录下的“translate”文件夹,将两个ts文件都选中,后续其他语言的也是类似,选中中文和其他某个目标语种的文件,两个问题一起打开,对比着填入就不会错,当然你也可以只打开一个,如果你会这个语种的话。
出现弹框,选择好源语言和目标语言
6.编辑多语言
在Qt语言家中,按照翻译给你的文档,将对应的源文本翻译成各个语种。
完成后点击“文件”->“保存全部”->“发布全部”,会发现在“translate”文件夹中又生成了两个qm文件。qm文件就是后续程序发布时要附带的真正的语言包文件。
7.程序中加载qm语言包
(1).工程的main.cpp中自己顶一个函数添加语言的加载
#include "mainwindow.h"
#include <QApplication>
#include <QTranslator>
#include <QFileInfo>
bool loadLanguageTranslator(QTranslator *trans)
{
QString strLanguageValue;
int nLanguage = 0;
bool ret;
QString strLanguagePath;
switch (nLanguage) {
case 0:
default:
// chinese
strLanguagePath = QCoreApplication