تقنيات تعريب البرامج
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
مثال تطبيقي
الخاتمة
تعريب البرامج ليس باملهمة املستحيلة أو الصعوبة البالغة ,ولكن تعتريه بعض
السلبيات كما سبق ذكره وأهـمها هو الحاجة إلعادة عملية التعريب في حال صدر
إصدار جديد من البرنامج وهو ما يضيع الوقت والجهد.
بحمد هللا تمكنا من إيجاد تقنية فعالة إلضافة ميزة تعدد اللغات ألي برنامج ,كما و
قمنا بتقديم البرامج املساعدة لهذه العملية.