تقنيات تعريب البرامج

Download Report

Transcript تقنيات تعريب البرامج

‫تقنيات تعريب البرامج‬
‫ريان الحميد‬
‫عبدهللا الحمود‬
‫‪422002668‬‬
‫‪422005881‬‬
‫هشام البوعليان ‪422003903‬‬
‫مقدمة‬
‫ً‬
‫سنتناول في هذا البحث الحديث عن الوسائل (التقنيات) املستخدمة حاليا لتعريب‬
‫ً‬
‫ق‬
‫البرامج وتعداد بعضا من مميزاتها وعيوبها‪ ,‬ثم نتطر بالحديث عن التقنية التي نريد‬
‫تفصيلها ووضع الطرق واألساليب املثالية للقيام بمهمة تعريب البرامج على أكمل‬
‫وجه‪.‬‬
‫التقنيات املستخدمة حاليا‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫(في حال توفر الشفرة املصدرية)‬
‫البد للمترجم من معرفة أصول وقواعد لغة البرمجة‪.‬‬
‫عند صدور نسخة جديدة من البرنامج املعرب‪ ،‬يجب على املترجم أن يعاود الترجمة‬
‫كلها من جديد‪.‬‬
‫صعوبة املرور بجميع أجزاء البرنامج عند كونه ضخما ومعقدا‪.‬‬
‫التقنيات املستخدمة حاليا‬
‫(في حال توفر الشفرة املصدرية)‬
‫أمثلة على تعريب بعض البرامج عند توفر الشفرة املصدرية‬
)‫(في حال توفر الشفرة املصدرية‬
…
Me.Label1.Location = New System.Drawing.Point(64, 72)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(168, 16)
Me.Label1.TabIndex = 0
Me.Label1.Text = "Enter Text Here"
Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'TextBox1
'
Me.TextBox1.Location = New System.Drawing.Point(16, 96)
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.Size = New System.Drawing.Size(264, 20)
Me.TextBox1.TabIndex = 1
Me.TextBox1.Text = ""
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(120, 120)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(56, 24)
Me.Button1.TabIndex = 2
Me.Button1.Text = "Enter“
…….
‫التقنيات املستخدمة حاليا‬
: Visual Basic .Net ‫لغة‬

‫التقنيات املستخدمة حاليا‬
‫(في حال توفر الشفرة املصدرية)‬
‫التقنيات املستخدمة حاليا‬
‫‪‬‬
‫(في حال توفر الشفرة املصدرية)‬
‫عند الرغبة في الترجمة على املترجم أن يبحث عن كل ما يظهر للمستخدم من رسائل‬
‫وأسماء‪ ،‬فمثال لتعريب زر عليه أن يبحث عن الجزء الذي يحوي النص املعروض‬
‫ويعربه كما في السطر التالي ‪:‬‬
‫"‪….Text = "….‬‬
‫‪‬‬
‫لعدم أهـمية املحاذاة في كل من بطاقة التعريف واألزرار ونظرا لكبر حجم‬
‫مربع النص نسبيا مقارنة باملكونات األخرى فإن املحاذاة مهمة‪ ،‬ولذلك‬
‫نزيد عليها السطر ‪:‬‬
‫‪….RightToLeft = System.Windows.Forms.RightToLeft.Yes‬‬
‫التقنيات املستخدمة حاليا‬
‫(في حال توفر الشفرة املصدرية)‬
‫التقنيات املستخدمة حاليا‬
‫‪‬‬
‫‪‬‬
‫(في حال عدم توفر الشفرة املصدرية)‬
‫ً‬
‫عدم توفر الشفرة املصدرية أساسا‪ ،‬ويرجع ذلك إلى خوف املبرمجين أو‬
‫املطورين من تسرب أسرار عمل برامجهم خارج نطاق فريق العمل وما‬
‫يترتب على ذلك من ضياع للفوائد املادية واملعنوية من ذلك‪.‬‬
‫يجب مراعاة الروابط واعتمادية البرنامج على برامج أخرى قد تكون غير‬
‫ً‬
‫معربة‪ ،‬مما قد يسبب إشكاال عند تبادل املعلومات بين البرنامج والبرامج‬
‫األخرى‪.‬‬
‫برنامج ‪Resource Hacker‬‬
‫‪‬‬
‫ماهو برنامج ‪Resource Hacker‬؟‬
‫برنامج مجاني من تصميم ‪Angus Johnson‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫لعرض‬
‫تعديل‬
‫إعادة تسمية‬
‫حذف‬
‫استخراج مكونات امللفات التنفيذية التي تعمل ضمن منصة العمل ‪.Windows‬‬
‫يعمل هذا البرنامج على األنظمة التالية‪Win95, Win98, WinME, :‬‬
‫‪WinNT,Win2000,WinXP‬‬
‫مميزات برنامج ‪Resource Hacker‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫إمكانية تغير املؤشرات (‪ )Cursors‬في البرنامج‪.‬‬
‫إمكانية تغير الصور (‪ )Bitmaps‬في البرنامج‪.‬‬
‫إمكانية تغير األيقونات (‪ )Icons‬في البرنامج‪.‬‬
‫إمكانية تغير الئحة القوائم )‪ )Menus‬في البرنامج‪.‬‬
‫إمكانية تغير صناديق الحوار ( ‪ )Dialogs‬في البرنامج‪.‬‬
‫إمكانية تغير جميع النصوص (‪ )Strings‬املوجودة في البرنامج‪.‬‬
‫إمكانية التعديل الكامل في الواجهات وتغير مواقع بعض صناديق الحوار أو األزرار وما‬
‫شابهها‪.‬‬
Resource Hacker ‫برنامج‬
Resource Hacker ‫برنامج‬
Resource Hacker ‫برنامج‬
‫عيوب برنامج ‪Resource Hacker‬‬
‫‪‬‬
‫‪‬‬
‫عدم إمكانية التعديل في البرامج املكتوبة بواسطة بيئة العمل ‪.Net‬‬
‫يتطلب في حال إصدار نسخة جديدة من البرنامج املراد تعريبه أن يتم التعريب من‬
‫نقطة الصفر‪.‬‬
‫برنامج ‪)2005-1997( Restorator‬‬
‫‪‬‬
‫يسمح بتحرير موارد البرامج التنفيذية وملفات الربط الديناميكي (‪ )dll‬و ملفات‬
‫املوارد (‪.)res, dcr, rc‬‬
‫يسمح بتحرير الصور املضمنة داخل امللف التنفيذي‪.‬‬
‫‪‬‬
‫يمتاز بأنه يقوم بإنشاء ملف (‪.)Patch‬‬
‫يقوم البرنامج بتقسيم املوارد الى مجموعات‪ ,‬ما يهمنا لتعريب واجهات البرامج هو‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫املجموعة (‪)Menu‬‬
‫املجموعة (‪)Dialog‬‬
‫املجموعة (ٍ‪)String‬‬
‫التعريب بتوظيف تقنية ‪XML‬‬
‫‪‬‬
‫ترتكز هذه الفكرة على أن النصوص املستـخدمة في البرنامج تكون في ملفات خارجية‪.‬‬
‫‪‬‬
‫أسباب اختيار ‪ XML‬لتنسيق امللفات‬
‫‪ ‬التنظيم‪.‬‬
‫‪ ‬دعم العديد من لغات البرمجة لها‪.‬‬
‫‪ ‬ملرونتها حيث أنها غير مرتبطة بمنصة عمل معينة ويمكن نقلها بين أكثر من‬
‫منصة عمل و االستفادة منها دون الحاجة للتعديل عليها‪.‬‬
‫شرح تقنية ‪XML‬‬
‫‪‬‬
‫لغة ‪ XML‬هي لغة نصيه تعتمد على الوسوم (‪ )Tags‬كبنية أساسية لها‪ ,‬يبدأ‬
‫ملف ‪ XML‬بسطر التعريف (اختياري) التالي‪:‬‬
‫‪‬‬
‫>? "‪<?xml version="1.0‬‬
‫توجد عدة خصائص "‪ "Attributes‬إضافية للوسم السابق منها الترميز املستخدم‬
‫لكتابة النص "‪ "encoding‬وفي حال لم يتم تعريف هذه الخاصية فإن الترميز‬
‫االفتراض ي هو ‪.Unicode‬‬
‫‪‬‬
‫شرح تقنية ‪XML‬‬
‫‪‬‬
‫يقوم املطور بعمل الوسوم الخاصة به حسب حاجته ويقوم بتحديد الخصائص لكل‬
‫‪ tag‬إذا دعت الحاجة لذلك‪ ,‬مع مراعاة الشروط التالية‪:‬‬
‫‪ ‬يبدأ الوسم بحرف التيني أو شرطة سفلية( _ ) وال يمكن أن يبدأ برقم أو رمز‪.‬‬
‫‪ ‬جميع الحروف عدا الحرف األول يمكن أن تكون حرف أو رقم أو شرطة‬
‫سفلية ( _ ) أو نقطة (‪. ).‬‬
‫‪ ‬ال يسمح بوجود فراغات بين أحرف الوسم‪.‬‬
‫‪‬‬
‫‪‬‬
‫ال يسمح للوسم بأن يبدأ بالكلمة ‪ XML‬سواء بأحرف كبيرة أو صغيرة‪.‬‬
‫ال يسمح بوجود فراغ بين رمز بداية الوسم (<) والحرف األول من الوسم‪.‬‬
XML ‫مثال مللف‬
<?xml version="1.0" standalone="yes"?>
<language>
<Component>
<name>button1</name>
<text>Change Language</text>
</ Component >
< Component >
<name>label1</name>
<text>Welcome</text>
</ Component >
< Component >
<name>checkBox1</name>
<text>True</text>
</ Component >
</language>
XML ‫مثال مللف‬
‫يمكن تخيل امللف السابق بالشكل التالي‬
Language
Language
…..
element
element
element
element
…..
name
name
text
text
name
name
…..
button1
Change
Language

‫استخداماتها‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪ XML‬لوصف و تخزين البيانات بشكل منظم‪ ,‬ومن استخداماتها‬
‫تستخدم لغة‬
‫ً‬
‫العملية املنتشرة أيضا على سبيل املثال ال الحصر‬
‫تطوير خدمات الويب‬
‫‪ ‬مواقع األخبار‪.‬‬
‫‪ ‬املنتديات‪.‬‬
‫التوثيق‬
‫‪ ‬كتب التعليمات املرفقة مع البرامج‪.‬‬
‫‪ ‬توثيق دفتر العناوين‪.‬‬
‫النشر االليكتروني‬
‫‪ ‬الجداول االليكترونية‪.‬‬
‫‪ ‬العروض التقديمية‪.‬‬
‫مميزات لغة ‪XML‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫السهولة‪ :‬في القراءة والتعامل‪.‬‬
‫ً‬
‫سواء من‬
‫كونه مفتوح االستخدام‪ :‬حيث ال يجب الحصول على رخصة الستخدامه‬
‫املطورين أو املستخدمين‪.‬‬
‫قابليتها للتوسع‪ :‬حيث أنها تقنية مثالية لوصف دفتر عناوين وفي نفس الوقت مثالية‬
‫لوصف بيانات مشاريع عمالقة‪.‬‬
‫فصل املحتوى عن البرامج‪ :‬بحيث يتم تحرير املحتوى وجعله على هيئه تسهل‬
‫التعامل معه من أي برنامج أو نظام دون الحاجة للتعديل‪.‬‬
‫البرامج املساعدة‪ :‬برنامج املعرب‬
‫برنامج التعريب‪:‬‬
‫‪‬‬
‫قراءة ملفات الـ ‪ XML‬وعرضها بشكل منظم‪.‬‬
‫اعادة تسمية املكونات (‪.)Component2.text‬‬
‫اضافة مكونات جديدة‪.‬‬
‫‪‬‬
‫الكتابة إلى ملف ‪ XML‬آخر‪.‬‬
‫‪‬‬
‫‪‬‬
‫البرامج املساعدة‪ :‬برنامج املعرب‬
‫‪XML File‬‬
‫البرامج املساعدة‪ :‬برنامج املعرب‬
‫البرامج املساعدة‪ :‬برنامج النصوص‬
‫برنامج النصوص‪:‬‬
‫‪ ‬فتح ملف تنفيذي واستخراج النصوص إلى ملف ‪.XML‬‬
‫‪ ‬قراءة النصوص من ملف ‪ XML‬وكتابتها على امللف التنفيذي‪.‬‬
‫ً‬
‫ونظرا لضيق الوقت وضرورة البحث عن طرق فتح امللفات التنفيذية لم نستطع القيام‬
‫ً‬
‫ببرمجته ولكنه ممكن التنفيذ استنادنا على فكرة برنامج الـ ‪Resource‬‬
‫‪ Hacker‬و غيرها‪...‬‬
‫البرامج املساعدة‪ :‬برنامج النصوص‬
‫‪Code‬‬
‫‪Strings‬‬
‫‪XML File‬‬
‫البرامج املساعدة‪ :‬برنامج املقارنة‬
‫برنامج املقارنة‪:‬‬
‫ترتكز فكرة هذا البرنامج على املقارنة بين ملفين –س‪ 1‬معرب‪ ،‬س‪ 2‬غير معرب ومطور (‬
‫يحوي على نصوص جديدة ) – يقوم البرنامج باملقارنة وإخراج ملف جديد س‪3‬‬
‫ً‬
‫يحوي نصوص امللف س‪ 1‬مضافا إليها نصوص امللف س‪ 2‬الجديدة‪.‬‬
‫ برنامج املقارنة‬:‫البرامج املساعدة‬
XML
2
+--------------------+
| item1 | string1 |
| item2 | string2 |
| item3 | string3 |
| item4 | string4 |
| item5 | string5 |
+--------------------+
3
+--------------------+
| item1 | 1
|
| item2 | 2
|
| item3 | 3
|
| item4 | string4 |
| item5 | string5 |
+--------------------+
New Strings
Compare Program
XML
1
+--------------------+
| item1 | 1
|
| item2 | 2
|
| item3 | 3
|
+--------------------+
‫توظيف تقنية ‪ XML‬بتعاون املبرمجين‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫إنشاء ملف الـ ‪ XML‬والذي يحوي على جميع العناصر املوجودة في البرنامج وذلك‬
‫باستخدام برنامج املعرب‪.‬‬
‫ً‬
‫إضافة الفئة ( ‪ ) Class‬املصممة مسبقا إلى برنامج املبرمج والذي يسهل البحث‬
‫داخل ملف الـ‪ XML‬وجلب النص املطلوب‪.‬‬
‫إسناد جميع نصوص املكونات إلى الفئة التي تقوم بجلب النص من ملف الـ‬
‫‪.XML‬‬
‫ املستخدم‬XML ‫ملف الـ‬
<? xml version="1.0" ?>
<language>
<Component>
<name>Component1.name</name>
<text>Component1.text</name>
</Component>
<Component>
<name>Component2.name</name>
<text>Component2.text</name>
</Component>
<Component>
<name>Component3.name</name>
<text>Component3.text</name>
</Component>
</language>
public class Loc
{
public string GetString(string ItemName, string XmlFileName)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(XmlFileName.ToString());
XmlNodeList XmlNod =
xmlDoc.GetElementsByTagName("Component");
for(int i=0;i<XmlNod.Count;i++)
{
if(XmlNod[i].FirstChild.InnerText.ToString()==
ItemName.ToString())
return XmlNod[i].LastChild.InnerText.ToString();
}
return null;
}
}
private void lang(string Path)
{
//Create an Object of the Class Loc
Loc lan = new Loc();
//Bring Every Component's text form XML File
//which lan.GetString will return the string.
button1.Text
= lan.GetString("button1",Path);
label1.Text
= lan.GetString("label1",Path);
checkBox1.Text = lan.GetString("checkBox1",Path);
menuItem1.Text = lan.GetString("menuItem1",Path);
}
‫في حال إصدار نسخه جديدة من البرنامج‬
XML
v5
XML String File For v5
+--------------------+
| item1 | string1 |
| item2 | string2 |
| item3 | string3 |
| item4 | string4 |
| item5 | string5 |
+--------------------+
New Strings
XML
v5
XML String File For v5
After Compare
+--------------------+
| item1 | 1
|
| item2 | 2
|
| item3 | 3
|
| item4 | string4 |
| item5 | string5 |
+--------------------+
XML
Compare Program
v5
XML String File For v5
After Translate
+--------------------+
| item1 | 1
|
| item2 | 2
|
| item3 | 3
|
| item4 | 4
|
| item5 | 5
|
+--------------------+
XML
v4
XML String File For v4
+--------------------+
| item1 | 1
|
| item2 | 2
|
| item3 | 3
|
+--------------------+
‫بدون تعاون املبرمج‬
‫‪Code‬‬
‫‪XML‬‬
‫‪XML‬‬
‫)‬
‫‪( XML‬‬
Code
XML v5
v5
XML String File For v5
+--------------------+
| item1 | string1 |
| item2 | string2 |
| item3 | string3 |
| item4 | string4 |
| item5 | string5 |
+--------------------+
v5
XML String File For v5
After Compare
+--------------------+
| item1 | 1
|
| item2 | 2
|
| item3 | 3
|
| item4 | string4 |
| item5 | string5 |
+--------------------+
New Strings
Compare Program
‫في حال إصدار نسخه جديدة من البرنامج‬
XML Translator
v5
XML String File For v5
After Translate
+--------------------+
| item1 | 1
|
| item2 | 2
|
| item3 | 3
|
| item4 | 4
|
| item5 | 5
|
+--------------------+
XML v4
v4
XML String File For v4
+--------------------+
| item1 | 1
|
| item2 | 2
|
| item3 | 3
|
+--------------------+
XML
Code
v5
v5
‫مثال تطبيقي‬
‫الخاتمة‬
‫‪‬‬
‫‪‬‬
‫تعريب البرامج ليس باملهمة املستحيلة أو الصعوبة البالغة‪ ,‬ولكن تعتريه بعض‬
‫السلبيات كما سبق ذكره وأهـمها هو الحاجة إلعادة عملية التعريب في حال صدر‬
‫إصدار جديد من البرنامج وهو ما يضيع الوقت والجهد‪.‬‬
‫بحمد هللا تمكنا من إيجاد تقنية فعالة إلضافة ميزة تعدد اللغات ألي برنامج‪ ,‬كما و‬
‫قمنا بتقديم البرامج املساعدة لهذه العملية‪.‬‬