我可以将翻译器安装为myApp.installTranslator(&translator)
是否可以拥有多个翻译文件并从我的应用程序的不同部分加载它们?我该怎么办?
答案 0 :(得分:6)
是的,你可以。正如医生所说:
将翻译文件translationFile添加到翻译列表中 用于翻译的文件。
可以安装多个翻译文件。搜索翻译 因为它们安装的顺序相反,所以最多 首先搜索最近安装的翻译文件 最后搜索安装的翻译文件。搜索会尽快停止 找到包含匹配字符串的翻译。
安装或删除QTranslator,或更改已安装的 QTranslator为QCoreApplication生成一个LanguageChange事件 实例。 QApplication实例会将事件传播给所有人 顶层窗口,可以重新实现changeEvent 通过传递用户可见的字符串来重新翻译用户界面 tr()函数到相应的属性设置器。用户界面 Qt Designer生成的类提供了retranslateUi()函数 可以被称为。
该函数在成功时返回true,在失败时返回false。
您需要加载一些翻译文件qApp
宏来获取QApplication
函数外的main()
实例,并执行以下操作:
QTranslator translator;//somewhere
void MainWindow::on_someButton_clicked()
{
translator.load("://en.qm");
qApp->installTranslator( &translator );
ui->retranslateUi(this); //for Qt designer
}
您也可以删除翻译器:
void MainWindow::on_someButton_2_clicked()
{
qApp->removeTranslator(&translator);
ui->retranslateUi(this);
}
国际化是一个很重要的部分,所以我也可以建议下一个链接:
Writing Source Code for Translation
书籍:
Foundations of Qt Development (Expert's Voice in Open Source) 第10章
C++ GUI Programming with Qt 4 (2nd Edition) (Prentice Hall Open Source Software Development Series) 第18章
Qt4.8. Professionalnoe programmirovanie na C++ (Russian) 第31章(对于讲俄语的人)