我可以加载多个QTranslator文件,每个文件用于我的应用程序的不同部分吗?

cnd*_*cnd 4 qt qtranslate

我可以安装翻译器 myApp.installTranslator(&translator)

是否可以拥有多个翻译文件并从我的应用程序的不同部分加载它们?我该怎么做?

Che*_*byl 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
}
Run Code Online (Sandbox Code Playgroud)

您也可以删除翻译:

void MainWindow::on_someButton_2_clicked()
{
    qApp->removeTranslator(&translator);
    ui->retranslateUi(this);
}
Run Code Online (Sandbox Code Playgroud)

国际化是一个很大的部分,所以我可以建议下一个链接:

Qt的国际化

编写翻译源代码

和书籍:

Qt开发的基础(专家在开源中的声音) 第10章

使用Qt 4(第2版)进行C++ GUI编程(Prentice Hall开源软件开发系列) 第18章

Qt4.8.Professionalnoe programmirovanie na C++(俄语) 第31章(俄语)