>> الصفحة الرئيسية >> سلسلة دروس للمبتدئين >> ترجمة البرامج بواسطة Qt Linguist

الأقسام الرئيسية

 التنصيب والاعداد التنصيب والاعداد
 دروس متقدمة دروس متقدمة
 سلسلة دروس للمبتدئين سلسلة دروس للمبتدئين
 اساسيات لغة سي++ اساسيات لغة سي++
 مقالات ZetCode مقالات ZetCode
 

جديد الدروس

 الوحدة QtUiTools (واجهة المستخدم ديناميكية التوليد)
التاريخ 04/07/2009 الوحدة QtUiTools (واجهة المستخدم ديناميكية التوليد)
 Qt and Phonon
التاريخ 04/07/2009 Qt and Phonon
 تتمة الرسائل ومربعات الحوار في qt
التاريخ 04/07/2009 تتمة الرسائل ومربعات الحوار في qt
 مدخل الى xml في Qt
التاريخ 04/07/2009 مدخل الى xml في Qt
 الإدخال والإخراج لبيانات الفئات
التاريخ 04/07/2009 الإدخال والإخراج لبيانات الفئات
 

ترجمة البرامج بواسطة Qt Linguist

يمكنك في Qt ان تترجم برنامجك الى عدة لغات بحيث يمكن ان يستعمله اي كانت لغته وذلك باستعمال Qt Linguist
الترجمة في Qt امر بسيط جدا بحيث يمكن ان يقوم به اي شخص
اول ما تحتاج اليه هو ملف ترجمة ذو امتداد .ts وهو ملف قابل للترجمة بواسطة Qt Linguist
هذا الملف يحتوي على اسم الترجمة وهو كالتالي nomduprogramme_langue.ts
بحيث nomduprogramme اسم البرنامج و langue لغة الترجمة والامتداد ts
لنفترظ ان برنامجنا اسمه Hello فيكون ملف الترجمة كالتالي
Hello_ar.ts بحيث ar هي العربية
Hello_en.ts بحيث fr هي الفرنسية
Hello_ru.ts بحيث ru هي الروسية ....الخ
وعند الانتهاء من الترجمة نقوم بعملية "compile" لملف ts بحيث نحصل على ملف نهائي ذو امتداد .qm
خطوات الترجمة

أول خطوة للترجمة تبدأ مع كتابة كود البرنامج بحيث يتوافق مع عملية الترجمة
فكما تعرفون qt تستعمل فئة QString لادخال النصوص المتوافقة مع Unicode
QString متوافقة مع جميع اللغات حتى العربية منها ولذلك فان الكود التالي يبين لك ما يلي :

  1.  
  2. QString chaine = "Bonjour"; // متوافق مع الترجمة
  3. char chaine[] = "Bonjour"; // غير متوافق مع الترجمة
  4.  


الامر واضح جدا
هنالك طريقة سهلة ليعلم هل النص قابل للترجمة ام لا
وذلك باستعمال tr() التي تدل بان النص قابل للترجمة فمثلا :
  1.  
  2. quitter = new QPushButton("&Quitter");
  3. غير قابلة للترجمة//
  4.  
  5.  


  1.  
  2. quitter = new QPushButton(tr("&Quitter"));
  3. قابلة للترجمة//
  4.  


بسيطة جدا ولا تحتاج الى شرح لكن ماذا لو اشتبه على من يريد الترجمة نص ما وماذا يراد به فمثلا
Quitter هل يراد بها الخروج من البرنامج ام اغلاق النافذة المفتوحة فقط فاللغات تختلف من لغة الى اخرى
في هذه الحالة يمكن أن نبين للمترجم ما يلي وذالك باظافة رسالة أخرى لا يعرظها البرنامج وانما تكون متاحة للمترجم فقط
  1.  
  2. quitter = new QPushButton(tr("&Quitter", "Utilisé pour le bouton de fermeture"));
  3.  
  4.  


او
  1.  
  2. actionQuitter->setShortcut(QKeySequence(tr("Ctrl+Q", "Raccourci clavier pour quitter")));
  3.  


ففي هذا المثال نبين للمترجم ان هذا عبارة عن اختصار للوحة المفاتيح

الخطوة التالية انشاء ملفات الترجمة .ts

قبل كل شيئ يجب أن نحرر ملف .pro وان نضيف له البيانات التالية
  1.  
  2. TEMPLATE = app
  3. TARGET =
  4. DEPENDPATH += .
  5. INCLUDEPATH += .
  6.  
  7. # Input
  8. HEADERS += FenCodeGenere.h FenPrincipale.h
  9. SOURCES += FenCodeGenere.cpp FenPrincipale.cpp main.cpp
  10. TRANSLATIONS = hello_en.ts hello_ar.ts
  11.  


TRANSLATIONS = hello_en.ts hello_ar.ts

اظفنا ملفي الترجمة للبرنامج وهما hello_en.ts ملف للعربية و hello_ar.ts ملف للانجليزية
نقوم الان بفتح نافذة مطراف console ثم نذهب الى مجلد المشروع باستعمال الامر CD ثم نكتب

lupdate NomDuProjet.pro

بحيث NomDuProjet هو اسم المشروع
lupdate يقوم بتحديث ملف ts او انشائه من جديد اذا لم يكن موجودا
بعد ذلك لنذهب الى مجلد المشروع لنجد انه لدينا ملفان جديدان hello_fr.tsو hello_ar.ts


ترجمة البرنامج بواسطة Qt Linguist

قم بتشغيل Qt Linguist ثم قم بفتح احد الملفين المشار اليهم سابقا ثم ابدأ الترجمة
وسوف تجده سهلا ليس فيه تعقيدات فبمجرد ان تجربه ستعرف كل شيئ


بعد الانتهاء من الترجمة قم بحفظ التغييرات ولا يبقى لنا الا بعمل compile لملف ts
قم بفتح نافذة مطراف console مرة اخرى اذهب الى مجلد المشروع وادخل ما يلي

lrelease nomDuFichier.ts

بحيث nomDuFichier هو اسم ملف الترجمة وليكن مثلا :

lrelease Hello_ar.ts

كما يمكنك ان تعمل compile لكل ملفات ts الموجودة في المشروع وذالك بادخال

lrelease nomDuProjet.pro

بحيث nomDuProjet هو اسم المشروع وليكن مثلا

lrelease hello.pro

سنحصل بعدها على ملفات qm نهائية يمكن استعمالها في البرنامج
في حالتنا سننتقل الى مجلد المشروع لنجد ملفين من نوع qm وهما

Hello_ar.qm
Hello_en.qm

ملاحظة : لا يتم عمل compile الا للنصوص او الكلمات المترجمة اما التي لم تترجم فسوف يتجاهلها

تحميل ملف مترجم .qm في البرنامج

لتحميل الملف في البرنامج لابد ان ندخل البيانات في ملف main
مثلا:
  1.  
  2. int main(int argc, char* argv[])
  3.  
  4. {
  5. QApplication app(argc, argv);
  6.  
  7. QTranslator translator;
  8. translator.load("hello_ar");
  9. app.installTranslator(&translator);
  10.  
  11. FenPrincipale fenetre;
  12. fenetre.show();
  13.  
  14. return app.exec();
  15. }
  16.  
  17.  

لا تنسى ان تعرف QTranslator في بداية الكلاس
وتأكد من ان ملف qm موجود في نفس المجلد الموجود فيه التطبيق

ستحصل على نافذة حسب الملف المترجم في حالتنا هذه مثلا فهو بالعربية لكن هذه الطريقة ليست عملية
بل هناك طريقة لجعل النافذة تتوافق حسب لغة المستخدم في هذه الحالة يكون الكود كما يلي :

  1.  
  2. int main(int argc, char* argv[])
  3. {
  4. QApplication app(argc, argv);
  5.  
  6. QString locale = QLocale::system().name().section('_', 0, 0);
  7.  
  8. QTranslator translator;
  9. translator.load(QString("hello_") + locale);
  10. app.installTranslator(&translator);
  11.  
  12. FenPrincipale fenetre;
  13. fenetre.show();
  14.  
  15. return app.exec();
  16. }
  17.  



الشرح : هنا سنحاول الحصول على حرفين من لغة آلة المستخدم
لان QLocale::system().name() تعطينا نتيجة تشبه هذه "fr_FR" أو "ar_SA" الاولى اسم اللغة والثاية البلد
وباستعمال section نقسم الجملة الى اثنين بين "_" لنحصل على "ar" مثلا
وهكذا يمكنك استعمال لغات كثيرة في برنامجك



وأرجو ان اكون قد وفقت في افادة ولويسيرة حول هذا الموضوع

إسم الكاتب تاريخ الإضافة التقييم / المقيمين زيارات الدرس
أبو زكريا 24/03/2009 15 / 2 1691

الأكثر زيارة

 دليل تنصيب اطار عمل Qt ، حزمة MinGW ، بيئة التطوير QDevelop
الزيارات 4284 دليل تنصيب اطار عمل Qt ، حزمة MinGW ، بيئة التطوير QDevelop
 اعداد وتنصيب Qt
الزيارات 4071 اعداد وتنصيب Qt
 التطوير السريع للتطبيقات Rapid Application Development
الزيارات 3762 التطوير السريع للتطبيقات Rapid Application Development
 دليل تنصيب اطار عمل Qt ، حزمة MinGW ، بيئة التطوير Eclipse
الزيارات 3747 دليل تنصيب اطار عمل Qt ، حزمة MinGW ، بيئة التطوير Eclipse
 C++ In a Nutshell
الزيارات 3154 C++ In a Nutshell
 

الأكثر تصويتـا

 اعداد وتنصيب Qt
نتيجة التصويت 41 من 6 شخص اعداد وتنصيب Qt
 الدرس الاول : كتابة اول برنامج
نتيجة التصويت 41 من 6 شخص الدرس الاول : كتابة اول برنامج
 تخطيط البرامج Program Layout
نتيجة التصويت 40 من 6 شخص تخطيط البرامج Program Layout
 دوال المستوى العالي لبرمجة تطبيقات متعددة المسالك
نتيجة التصويت 30 من 3 شخص دوال المستوى العالي لبرمجة تطبيقات متعددة المسالك
 التطوير السريع للتطبيقات Rapid Application Development
نتيجة التصويت 30 من 5 شخص التطوير السريع للتطبيقات Rapid Application Development
 
 

سكربت story-script v1 برمجة bwady.com تطوير SudaNix