修改工程文件 .pro ,加入翻译源文件 hello_world.ts:
TRANSLATIONS +=
Resource/translations/hello_world.ts
写代码时需要注意下面两点:
源码中需要翻译的字符串必须用英文(不能有中文或其它语言),则需要用 tr() 函数。 例如:
QMessageBox::information(this,tr(“Information”),tr(“Hello world.”));
4.更新翻译源文件: 工具-》外部-》qt 语言家-》更新翻译(lupdtae) 工具 lupdate 自动分析工程文件 .pro ,找到翻译源文件 hello_world.ts ;然后会分析源码中包含在 tr 中的字符串,写入到翻译源文件 hello_world.ts 中。翻译源文件是一个 xml 文件。
5、修改翻译源文件 hello_world.ts : 5.1. 你可以直接编辑翻译源文件进行翻译 5.2. 你也可以用工具 linguist 进行翻译
//本地化程序资源 QTranslator myappTranslator; //把翻译文件放在了程序资源中 myappTranslator.load(“:/translations/hello_world.qm”); qApp->installTranslator(&myappTranslator);
6.2. 从翻译资源文件中直接加载
//本地化程序资源 QTranslator myappTranslator; //把翻译文件放在了程序资源中 myappTranslator.load(“C:/translations/hello_world.qm”); qApp->installTranslator(&myappTranslator);
编译: 工具-》外部-》qt 语言家-》更新翻译(lrelease) 翻译完翻译源文件后,需要翻译编译工具(lrelease)把翻译源文件编译成翻译资源文件 hello_world.qm 。
qt 资源: qt 翻译资源在安装目录下的 translate 目录下。
在程序中做翻译菜单: 当语言进行切换时,需要调用 ui->retranslateUi(this); 更新主窗口。 如果非主窗口,则这个函数会触发 void changeEvent(QEvent *e) 事件。 例如:
void CHelloWorld::changeEvent(QEvent *e) { LOG_MODEL_DEBUG(“MainWindow”, “MainWindow::changeEvent.e->type:%d”, e->type()); switch(e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; } }