• 0
محمـد عواد

سؤال عن دعم كيو تي للغة العربية

سؤال

السلام عليكم ورحمة الله وبركاته

عندي مشروع مصمم بالأكواد وليس بال Qt Designer وأريد أن أجعل القوائم والواجهة باللغة العربية

قمت بتضمين الكود التالي في ملف main.cpp :

كود

 

#include <QApplication>

#include "mainwindow.h"

#include <QTextCodec>

int main(int argc, char *argv[])
{
Q_INIT_RESOURCE(mdi);


QApplication app(argc, argv);


QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

MainWindow mainWin;
mainWin.show();
return app.exec();
}


فلم تفلح هذه الطريقة وظهرت القوائم المكتوبة باللغة العربية وعنوان النافذة على هيئة رموز غير مفهومة

مع العلم أنني قمت بإنشاء الملفات بواسطة qtcreator. أولا وجعلت اليونيكود UTF-8 أيضا

ولما لم تفلح هذه الطريقة قمت بإنشاء الملفات بواسطة Notepad++ مع تفعيل الخيار UTF-8 without bom وقمت بنسخ الأكواد إلى الملفات الجديدة ثم قمت بفتحها بال qtcreator فكانت نفس النتيجة

فأرجو المساعدة

تم تعديل بواسطه محمـد عواد
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

9 إجابة على هذا السؤال .

  • 0

اعتقد ان الطريقة التي استخدمتها خاطئة .. قرأت مرة انه إذا استخدمت ترميز UTF-8 without bom في ال NotePad++ علبيك بعدها بإستخدام برنامج محرر البانري

جرب حفظ الملف بترميز UTF-8 بإستخدام هذا البرنامج ... انا استخدمه في لينوكس وبصراحة انه برنامج اكثير من رائع .. بأمكانك القول انه شبيه بـ NotePad++ وبه خصائص كثيرة ... ويعمل على عدة انظمة

http://projects.gnome.org/gedit

http://projects.gnome.org/gedit/screenshots.html

وهذه نسخة انظمة الويندوز

http://ftp.gnome.org/pub/GNOME/binaries/win32/gedit/2.28/gedit-setup-2.28.3-1.exe

وهذه لنظام Max osx

http://ftp.gnome.org/pub/GNOME/binaries/mac/gedit/2.28/gedit-2.28.3.dmg

وبالنسبة لأنظمة الينوكس فيفضل تنزيلها من ال yum or apt-get

او تنزيل هذا الملف وبنائها من المصدر

http://ftp.gnome.org/pub/GNOME/sources/gedit/2.28/gedit-2.28.3.tar.gz

تم تعديل بواسطه العربي للبرمجة
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيك وأحسن غليك

للاسف نفس النتيجة ، قمت بتحميل البرنامج وتنصيبه بنجاح وحفظت جميع الملفات بترميز UTF-8

ولكن النتيجة كما هي

أنا استخدم win xp sp3 en وجميع إعدادات اللغة على العربية

أفكر بإعادة تنصيب الويندوز !!

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وعليكم السلام ورحمة الله وبركاته ،

عند تغيير الترميز في QtCreator عليك أن تقفله وتفتحه مجددا حتى تعتمد التغييرات.

جرب لي مجددا ،

نفذ الكود التالي:

#include <QtGui>

int main(int argc,char* argv[])
{
QApplication app(argc,argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

QMessageBox::information(0,"السلام عليكم","مرحبا يا عالم");

return 0;
}

واستخدم notepad++ ، وتأكد من أن الترميز هو UTF-8 without BOM ، ثم افتح Qt command prompt من قائمة البرامج وادخل على مسار الملف ونفذ


qmake -project
qmake
mingw32-make release

ثم افتح البرنامج .

الاخ العربي للبرمجة :

قرأت مرة انه إذا استخدمت ترميز UTF-8 without bom في ال NotePad++ علبيك بعدها بإستخدام برنامج محرر البانري

هذا في حالة استخدام ترميز ال UTF-8 ، حيث يقوم باضافة 3 بايت في بداية الملف لتدل على نوعه وهو 8.

بالتوفيق.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

راجع هنا أيضا .

http://www.arabteam2000-forum.com/index.php?showtopic=201516&view=findpost&p=1001925

لي ساعة وأنا ابحث عن الردود القديمة :wacko:

أعتقد حان وقت تجهيز ال FAQ

بالتوفيق.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيكم وأحسن الله إليكم

راجع هنا أيضا .

http://www.arabteam2000-forum.com/index.php?showtopic=201516&view=findpost&p=1001925

لي ساعة وأنا ابحث عن الردود القديمة :wacko:

أعتقد حان وقت تجهيز ال FAQ

بالتوفيق.

بارك الله فيكم وأحسن الله إليكم

عند اتباع الخطوات المذكورة تأتيني الأخطاء التالية

Microsoft Windows XP [Version 5.1.2600]

© Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\moon\Desktop\New Folder>qmake -project

C:\Documents and Settings\moon\Desktop\New Folder>qmake

C:\Documents and Settings\moon\Desktop\New Folder>make

mingw32-make -f Makefile.Release

mingw32-make[1]: Entering directory `C:/Documents and Settings/moon/Desktop/New

Folder'

g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT

-DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS

_QMAIN -I"..\..\..\..\Qt\4.3.4\include\QtCore" -I"..\..\..\..\Qt\4.3.4\include\Q

tCore" -I"..\..\..\..\Qt\4.3.4\include\QtGui" -I"..\..\..\..\Qt\4.3.4\include\Qt

Gui" -I"..\..\..\..\Qt\4.3.4\include" -I"." -I"c:\Qt\4.3.4\include\ActiveQt" -I"

release" -I"." -I"..\..\..\..\Qt\4.3.4\mkspecs\default" -o release\main.o main.c

pp

In file included from main.cpp:4:

mainwindow.h:9: error: expected constructor, destructor, or type conversion befo

re "class"

mainwindow.h:9: error: expected `,' or `;' before "class"

mainwindow.h:16: error: expected constructor, destructor, or type conversion bef

ore "class"

mainwindow.h:16: error: expected `,' or `;' before "class"

main.cpp: In function `int qMain(int, char**)':

main.cpp:11: error: `MainWindow' undeclared (first use this function)

main.cpp:11: error: (Each undeclared identifier is reported only once for each f

unction it appears in.)

main.cpp:11: error: expected `;' before "mainWin"

main.cpp:12: error: `mainWin' undeclared (first use this function)

mingw32-make[1]: *** [release/main.o] Error 1

mingw32-make[1]: Leaving directory `C:/Documents and Settings/moon/Desktop/New F

older'

mingw32-make: *** [release] Error 2

C:\Documents and Settings\moon\Desktop\New Folder>

مع العلم أن جميع الأكواد صحيحة مائة بالمائة والدليل على ذلك أنني إذا فتحت البرنامج بـ qtcreator فإنه يعمل بلا مشاكل ماعدا مشكلة اللغة العربية التي تظهر بحروف غير مفهومة

بالنسبة للكود

  #include <QtGui>

int main(int argc,char* argv[])
{
QApplication app(argc,argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

QMessageBox::information(0,"السلام عليكم","مرحبا يا عالم");

return 0;
}

فهو يعمل بلا مشاكل وتظهر اللغة العربية بشكل طبيعي

ومثله هذا الكود أيضا

 
#include <QApplication>
#include <QLabel>
#include <QTextCodec>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QLabel *label = new QLabel("مرحبا");
label->show();
return app.exec();
}

فهو يعمل بلا مشاكل أيضا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الله يبارك فيك ..

أرفق ملفات المشروع ، هناك أخطاء فيه كما يقول لنا المترجم .

مع العلم أن جميع الأكواد صحيحة مائة بالمائة والدليل على ذلك أنني إذا فتحت البرنامج بـ qtcreator فإنه يعمل بلا مشاكل ماعدا مشكلة اللغة العربية التي تظهر بحروف غير مفهومة

تأكد أنك تعمل على نفس المشروع ، افتح مشروع جديد للضمان وتأكد من تغيير الترميز وقفل ال IDE وفتحه مجددا قبل البدء في كتابة الكود.

بالنسبة لل QtCreator فهو واجهة للمترجم g++ (بشكل عام واجهة لنظام البناء make) ، لذلك يجب أن تكون النتيجة متطابقة تماما للنتيجة في سطر الاوامر، لانهما يعملان على نفس المترجم.

فهو يعمل بلا مشاكل وتظهر اللغة العربية بشكل طبيعي

تمام ،

لن تحتاج الان الى فورمات :)

في أمان الله.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جزاك الله عنا خير الجزاء واحسن الله إليك

المشروع في المرفقات

mdi.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السبب هو استخدامك للدالة tr حول كل النصوص العربية ، مثلا:

setWindowTitle(tr("مكتبة"));

ويجب ان تستخدم النسخة التي تدعم يونيكود :

setWindowTitle(trUtf8("مكتبة"));

حول كل الدوال .

او كحل أفضل وأبسط هو ان تضع هذا السطر بعد انشاء المتغير app

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

لتصبح الدالة main هكذا:

int main(int argc, char *argv[])
{
Q_INIT_RESOURCE(mdi);

QApplication app(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));


MainWindow mainWin;
mainWin.show();
return app.exec();
}

بالتوفيق.

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ما شاء الله لا قوة إلا بالله

أسأل الله أن يزيدك علما ونفعا وأن يجعل ما تبذله في ميزان حسناتك أنت وجميع المشرفين وأعضاء هذا المنتدى الطيب

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .