مشکل در ترجمه فارسی در کیوت
-
p{direction:rtl; text-align:right}. سلام به همه
من توی ترجمه فارسی به یه مشکلی خوردم توی سایت های مختلف هم فراوون سرچ کردم اما به نتیجه نرسیدم
اگر من از کنسول اپلیکیشن استفاده کنم با لود فایل "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 Englisha.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"));
.
.
.
}
@ -
p{direction:rtl; text-align:right}.
سلام به دوستان
من یه نکته ای را می خواستم یادآوری کنم و اونهم اینه که اگر من تو Consol Application اینکار را انجام بدهم همه چی اوکی هست من هم تست کردم. هیچ مشکلی نداره.
اما وقتی GUI دارم نمی دونم چجوری باید این ترجمه انجام شود من کارهای بالا را انجام دادم اما انگار نه انگار که من دارم retranslate می کنم هیچ اتفاقی نمی افته البته یه اتفاقایی میفته مثلا منوها راست چین میشه و.. اما ویدجت هایی که با tr() بهش عنوان دادم متنش فارسی نمیشه و کماکان انگلیسی می مونه
یه اتفاق دیگه هم میفته من تویه قسمتی از فرمم از QInputDiolog() استفاده میکنم که اون کلید و دیگر اجزاش اتواتیک درج میشه اونجا با تغییر زبان اوکی و کنسل به تایید و لغو ترجمه میشود فقط در همین پنجره متن ترجمه می شود
چرا؟؟؟ -
[quote author="Seyyed" date="1361947161"]p{direction:rtl; text-align:right}.
سلام به دوستان
من یه نکته ای را می خواستم یادآوری کنم و اونهم اینه که اگر من تو Consol Application اینکار را انجام بدهم همه چی اوکی هست من هم تست کردم. هیچ مشکلی نداره.
اما وقتی GUI دارم نمی دونم چجوری باید این ترجمه انجام شود من کارهای بالا را انجام دادم اما انگار نه انگار که من دارم retranslate می کنم هیچ اتفاقی نمی افته البته یه اتفاقایی میفته مثلا منوها راست چین میشه و.. اما ویدجت هایی که با tr() بهش عنوان دادم متنش فارسی نمیشه و کماکان انگلیسی می مونه
یه اتفاق دیگه هم میفته من تویه قسمتی از فرمم از QInputDiolog() استفاده میکنم که اون کلید و دیگر اجزاش اتواتیک درج میشه اونجا با تغییر زبان اوکی و کنسل به تایید و لغو ترجمه میشود فقط در همین پنجره متن ترجمه می شود
چرا؟؟؟[/quote]p{direction:rtl; text-align:right}. خوب؟ مشکل چیه؟