|
|
|
ترجمة البرامج بواسطة 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 متوافقة مع جميع اللغات حتى العربية منها ولذلك فان الكود التالي يبين لك ما يلي :
QString chaine = "Bonjour"; // متوافق مع الترجمة char chaine[] = "Bonjour"; // غير متوافق مع الترجمة
|
الامر واضح جدا
هنالك طريقة سهلة ليعلم هل النص قابل للترجمة ام لا
وذلك باستعمال tr() التي تدل بان النص قابل للترجمة فمثلا :
بسيطة جدا ولا تحتاج الى شرح لكن ماذا لو اشتبه على من يريد الترجمة نص ما وماذا يراد به فمثلا
Quitter هل يراد بها الخروج من البرنامج ام اغلاق النافذة المفتوحة فقط فاللغات تختلف من لغة الى اخرى
في هذه الحالة يمكن أن نبين للمترجم ما يلي وذالك باظافة رسالة أخرى لا يعرظها البرنامج وانما تكون متاحة للمترجم فقط
quitter = new QPushButton(tr ("&Quitter", "Utilisé pour le bouton de fermeture"));
|
او
actionQuitter ->setShortcut(QKeySequence(tr ("Ctrl+Q", "Raccourci clavier pour quitter")));
|
ففي هذا المثال نبين للمترجم ان هذا عبارة عن اختصار للوحة المفاتيح
الخطوة التالية انشاء ملفات الترجمة .ts
قبل كل شيئ يجب أن نحرر ملف .pro وان نضيف له البيانات التالية
TEMPLATE = app TARGET = DEPENDPATH += . INCLUDEPATH += . # Input HEADERS += FenCodeGenere.h FenPrincipale.h SOURCES += FenCodeGenere.cpp FenPrincipale.cpp main.cpp TRANSLATIONS = hello_en.ts hello_ar.ts
|
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
مثلا:
int main(int argc, char* argv[]) { translator.load("hello_ar"); app.installTranslator(&translator); FenPrincipale fenetre; fenetre.show(); return app.exec(); }
|
لا تنسى ان تعرف QTranslator في بداية الكلاس
وتأكد من ان ملف qm موجود في نفس المجلد الموجود فيه التطبيق
ستحصل على نافذة حسب الملف المترجم في حالتنا هذه مثلا فهو بالعربية لكن هذه الطريقة ليست عملية
بل هناك طريقة لجعل النافذة تتوافق حسب لغة المستخدم في هذه الحالة يكون الكود كما يلي :
int main(int argc, char* argv[]) { translator. load(QString("hello_") + locale ); app.installTranslator(&translator); FenPrincipale fenetre; fenetre.show(); return app.exec(); }
|
الشرح : هنا سنحاول الحصول على حرفين من لغة آلة المستخدم
لان QLocale::system().name() تعطينا نتيجة تشبه هذه "fr_FR" أو "ar_SA" الاولى اسم اللغة والثاية البلد
وباستعمال section نقسم الجملة الى اثنين بين "_" لنحصل على "ar" مثلا
وهكذا يمكنك استعمال لغات كثيرة في برنامجك


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