目标一:根据系统语言决定程序的显示语言
步骤
1、让程序支持语言替换:代码里用tr来标识要替换的语言资源
2、生成ts文件
1、在pro中添加要生成的ts文件名
TRANSLATIONS= myapp_zh_CN.ts \
+= myapp_EN.ts
2、使用lupdate工具,对pro文件做处理,会在pro同目录生成ts文件
3、生成qm文件
1、ts文件本质是xml
2、使用linguist工具,打开ts文件,增加文本对应的翻译内容即可
3、翻译完成,通过文件菜单中的Release,生成qm
4、在程序中使用资源文件
1、在main中添加以下代码
QTranslator appTranslator;
QString fileName = "myapp_" + QLocale::system().name();
QString path = qApp->applicationDirPath();
//从外部文件中加载
check = appTranslator.load(fileName, path);
qDebug() << check;
a.installTranslator(&appTranslator);
目标二:动态切换语言
步骤:
1、要把程序中设置显示文本的代码独立出来,比如窗口里只有一个按钮的化,就要定义这样一个函数
void MainWindow::retranslateUi()
{
m_pbnTest->setText(tr("test"));
}
2、窗口构造的时候调用该函数
3、在切换时可参考以下方式
void MainWindow::on_click()
{
static bool flag = true;
bool check;
qApp->removeTranslator(&m_appTranslator);
if(flag)
{
QString fileName = "myapp_" + QLocale::system().name();
check = m_appTranslator.load(QString(":translations/%1").arg(fileName));
flag = false;
qDebug() << "Using chinese" << check;
}
else
{
QString fileName = "myapp_EN";
check = m_appTranslator.load(QString(":translations/%1").arg(fileName));
flag = true;
qDebug() << "Using english" << check;
}
qApp->installTranslator(&m_appTranslator);
retranslateUi();
}
这段代码是测试用的,目的是点一下换一种语言。