我有一个用英语和阿拉伯语两种语言编写的程序,位于名为 app_en 和 app_ar 的文件中。我可以使用 QApplication 中的 installTranslator 在 main 的开头翻译程序。我的问题是如何通过推动 QAction 来更改程序的语言?
这是我的尝试:
我将我的语言 QAction 连接到一个插槽,该插槽获取用户选择的语言,然后保存它并转到另一个功能来安装翻译。这一切都发生在 QMainWindow 之外。
void MainCore::GetAndSaveLanguage(bool){
//Getting the language the users wants.
bool OKPressed;
QString Language = QInputDialog::getItem(NULL, InputDialogString, InputDialogString + ":", Languages, 0, false, &OKPressed)
.remove(QRegExp("*(", Qt::CaseSensitive, QRegExp::Wildcard)).remove(')');
//Checking if ok button was pressed.
if(OKPressed){
//Saving the languages.
Settings->beginGroup("Settings");
Settings->setValue("Language", Language);
Settings->endGroup();
//Update language.
UpdateTranslations(Language);
}
}
void MainCore::UpdateTranslations(QString Language){
//Setting the translation for the qt widgets.
QTranslator QtTranslator;
QtTranslator.load("qt_" + Language, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
QApplication::instance()->installTranslator(&QtTranslator); …Run Code Online (Sandbox Code Playgroud)