الأداة Linguist وملفات الترجمة هل يكفي هذا لتنطلق الى Qt

الناقل : elmasry | الكاتب الأصلى : مصفوفة | المصدر : www.arabteam2000-forum.com

بسم الله الرحمن الرحيم

الترجمة
ملفات الترجمة هي ملفات تقوم بتحويل برنامجك الى اللغة التي تريدها معتمدة في ترميزها على unicode وفي كتابتها على XML وينتهي مسارها ب ts .
تفيد هذه الملفات في ترجمة البرنامج الى اللغة المطلوبة
تخيلو لو ان لديك برنامج صاحب أكثر من لغة فهل تقوم بتحرير البرنامج بعدد اللغات بالطبع هذا يعتبر ضربا من الجنون لذلك قامت Qt بإنشاء الأداة linguist والتيت تقوم بتحرير الملف الى ملف ثنائي دو امتداد qm
وسوف نناقش هذا الموضوع ونتطرق الى بعض الأمثلة لكن في البداية دعنا نتطرق الى محتوى ملف ts

 
<?xml version="1.0" encoding="utf-8"?>
 
<!DOCTYPE TS><TS version="1.1" language="ar">
 
<defaultcodec></defaultcodec>
 
<context>
 
<name>QPushButton</name>
 
<message>
 
<location filename="ui/dialog.ui" line="13"/>
 
<source>Dialog</source>
 
<translation>Dialogo</translation>
 
</message>
 
<message>
 
<source>ahmed</source>
 
<translation>احمد</translation>
 
</message>
 
<message>
 
<source>mohammed</source>
 
<translation>محمد</translation>
 
</message>
 
<message>
 
<source>alabdaly</source>
 
<translation>العبدلي</translation>
 
</message>
 
</context>
 
</TS>

ي هذا المثال لملف ts قمنا بفتح ملف xml وكأهم المتغيرات في الملف هو

1.
name ويجب ان تدخل اسم الصف الذي سيقوم بترجمته
2.
Message وتحوي على الكلمة source وترجمتها translation

اما مابقي فأطبعه مثل ماهو عليه
2-كيف نصنع الملف ثنائي دو امتداد qm انظر الصورة رقم 2
3 كيف نقوم بضم ملف الترجمة الى المشروع
اضف الى الملف pro الأمر التالي
TRANSLATIONS += myname.ts
او
TRANSLATIONS = myname.ts
ان كان هناك ملف واحد فقط
كيف نتعامل معها من داخل البرمج
يجب عليك استدعا الصف Qtranslator
ومن ثم استدعاء الدالة load واضافة ملف الترجمة اليها (الإسم فقط بدون المسار)
ومن ثم اضافة مؤشر من نوع Qtranslator الى الدالة Qapplication::setTranslator
وهكذا يصبح معك هذا الشكل
                                                  
#include <QApplication>
 
#include <QtGui>
 
#include <QtCore>
 
//
 
int main(int argc, char ** argv)
 
{
 
QApplication app(argc, argv);
 
QTranslator translator;
 
translator.load("myname");
 
app.installTranslator(&translator);
 
QPushButton hello(QPushButton::tr("mohammed"));
 
hello.show();
 
return app.exec();
 
}


ولو قمت بترجمة المشروع سينتج معك الشكل التالي انظر الصورة رقم 3 وأنظر الصورة رقم 4 بمعرف كيف تحدد لغة الترجمة
 
ارفق صورة
 
  • Resized to 51% (was 1280 x 800) - Click image to enlargeارفق صورة : monthly_07_2008/post-164107-1215181239.jpg
  • Resized to 51% (was 1280 x 800) - Click image to enlargeارفق صورة : monthly_07_2008/post-164107-1215181253.jpg
  • Resized to 51% (was 1280 x 800) - Click image to enlargeارفق صورة : monthly_07_2008/post-164107-1215181284.jpg
  • Resized to 51% (was 1280 x 800) - Click image to enlargeارفق صورة : monthly_07_2008/post-164107-1215181300.jpg