我可以将翻译器安装为myApp.installTranslator(&translator)
是否可以有多个翻译文件并从我的应用程序的不同部分加载它们?我该怎么做?
是的你可以。正如医生所说:
将翻译文件 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);
}
国际化是很重要的一部分,所以我也可以建议下一个链接:
和书籍:
Qt 开发基础(开源专家之声) 第 10 章
C++ GUI Programming with Qt 4(第 2 版)(Prentice Hall 开源软件开发系列) 第 18 章
Qt4.8。Professionalnoe programmirovanie na C++ (Russian) Chapter 31 (for russian-speakers)