سلام به همه
من توی ترجمه فارسی به یه مشکلی خوردم توی سایت های مختلف هم فراوون سرچ کردم اما به نتیجه نرسیدم
اگر من از کنسول اپلیکیشن استفاده کنم با لود فایل “qt_fa.qm “ و در ادامه با ساختن ویدجت ها و نامگذاریشان بوسیله tr مشکل حل است.
اما من دارم از GUI استفاده میکنم. ابتدار در main فایل را لود میکنم و همینطور در mainwindow نیز اینکار را انجام میدم و بعدشم retranslate میکنم اما بازم جواب نگرفتم
کدی که من نوشتم بصورت زیره:
// main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
#include "QTranslator"
#include "QSettings"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSettings lanSettings ("Language","21");
QString lang = lanSettings.value("Language").toString();
QTranslator *translator = new QTranslator;
if (lang == "Persian") //For Persian Translate
translator->load("ControlCenter/Translator/qt_fr.qm");
else
translator->load(""); // For English
a.installTranslator(translator);
MainWindow w;
w.showFullScreen();
return a.exec();
}
// MainWindow.cpp
#include "QTranslator"
.
.
.
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
.
.
.
void MainWindow::SetLanguage()
{
QSettings lanSettings ("Language","21");
QStringList langList;
langList << "English" << "Persian";
QString language = QInputDialog::getItem(this,"Language", "Select Language:", langList,0);
if (lanSettings.value("Language").toString() != language) // if (User don’t select previous Language)
{
lanSettings.setValue("Language", language);
DoTranslate(language);
}
}
.
.
.
void MainWindow::DoTranslate(QString language)
{
QTranslator translator;
if (language == "Persian")
{
translator.load("qt_fr.qm");
qApp->installTranslator(&translator);
}
else
{
translator.load(""); // Default language is English
qApp->installTranslator(&translator);
}
ui->retranslateUi(this);
DoRetranslate();
}
void MainWindow::DoRetranslate()
{
ui->push->setText(tr("Open"));
ui->timeLabel.setText(tr("Time"));
.
.
.
}
↧