ترجمة البرامج بواسطة 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 متوافقة مع جميع اللغات حتى العربية منها ولذلك فان الكود التالي يبين لك ما يلي :
char chaine[] = "Bonjour"; // غير متوافق مع الترجمة
الامر واضح جدا
هنالك طريقة سهلة ليعلم هل النص قابل للترجمة ام لا
وذلك باستعمال tr() التي تدل بان النص قابل للترجمة فمثلا :
بسيطة جدا ولا تحتاج الى شرح لكن ماذا لو اشتبه على من يريد الترجمة نص ما وماذا يراد به فمثلا
Quitter هل يراد بها الخروج من البرنامج ام اغلاق النافذة المفتوحة فقط فاللغات تختلف من لغة الى اخرى
في هذه الحالة يمكن أن نبين للمترجم ما يلي وذالك باظافة رسالة أخرى لا يعرظها البرنامج وانما تكون متاحة للمترجم فقط.
او
ففي هذا المثال نبين للمترجم ان هذا عبارة عن اختصار للوحة المفاتيح
الخطوة التالية انشاء ملفات الترجمة ts:
قبل كل شيئ يجب أن نحرر ملف .pro وان نضيف له البيانات التالية :
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_ar.ts ملف للعربية و hello_en.ts ملف للانجليزية
نقوم الان بفتح نافذة مطراف console ثم نذهب الى مجلد المشروع باستعمال الامر CD ثم نكتب
بحيث NomDuProjet هو اسم المشروع
lupdate يقوم بتحديث ملف ts او انشائه من جديد اذا لم يكن موجودا
بعد ذلك لنذهب الى مجلد المشروع لنجد انه لدينا ملفان جديدان hello_fr.ts و hello_ar.ts
ترجمة البرنامج بواسطة Qt Linguist:
قم بتشغيل Qt Linguist ثم قم بفتح احد الملفين المشار اليهم سابقا ثم ابدأ الترجمة
وسوف تجده سهلا ليس فيه تعقيدات فبمجرد ان تجربه ستعرف كل شيئ

بعد الانتهاء من الترجمة قم بحفظ التغييرات ولا يبقى لنا الا بعمل compile لملف ts
قم بفتح نافذة مطراف console مرة اخرى اذهب الى مجلد المشروع وادخل ما يلي
بحيث nomDuFichier هو اسم ملف الترجمة وليكن مثلا :
كما يمكنك ان تعمل compile لكل ملفات ts الموجودة في المشروع وذالك بادخال
بحيث nomDuProjet هو اسم المشروع وليكن مثلا
سنحصل بعدها على ملفات qm نهائية يمكن استعمالها في البرنامج
في حالتنا سننتقل الى مجلد المشروع لنجد ملفين من نوع qm وهما
Hello_ar.qm
Hello_en.qm
ملاحظة : لا يتم عمل compile الا للنصوص او الكلمات المترجمة اما التي لم تترجم فسوف يتجاهلها
تحميل ملف مترجم .qm في البرنامج:
لتحميل الملف في البرنامج لابد ان ندخل البيانات في ملف main.
مثلا:
{
QApplication app(argc, argv);
QTranslator translator;
translator.load("hello_ar");
app.installTranslator(&translator);
FenPrincipale fenetre;
fenetre.show();
return app.exec();
}
لا تنسى ان تعرف QTranslator في بداية الكلاس
وتأكد من ان ملف qm موجود في نفس المجلد الموجود فيه التطبيق
ستحصل على نافذة حسب الملف المترجم في حالتنا هذه مثلا فهو بالعربية لكن هذه الطريقة ليست عملية
بل هناك طريقة لجعل النافذة تتوافق حسب لغة المستخدم في هذه الحالة يكون الكود كما يلي :
{
QApplication app(argc, argv);
QString locale = QLocale::system().name().section('_', 0, 0);
QTranslator translator;
translator.load(QString("hello_") + locale);
app.installTranslator(&translator);
FenPrincipale fenetre;
fenetre.show();
return app.exec();
}
الشرح : هنا سنحاول الحصول على حرفين من لغة آلة المستخدم
لان QLocale::system().name() تعطينا نتيجة تشبه هذه “fr_FR” أو “ar_SA” الاولى اسم اللغة والثانية البلد ، وباستعمال section نقسم الجملة الى اثنين بين “_” لنحصل على “ar” مثلا.
وهكذا يمكنك استعمال لغات كثيرة في برنامجك


وأرجو ان اكون قد وفقت في افادة ولويسيرة حول هذا الموضوع.
909 مشاهدة
هذا الموضوع كتب بواسطة Abo Zakaria في الأربعاء، 2 سبتمبر 2009 على 5:38 ص في صنف عام.
