تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ترجمة النصوص من الإنجليزية الي العربية بين الواقع و الخيال
#1
السلام عليكم ورحمة الله وبركاته

مقدمــــــــة:
ترجمة نص أو ترجمة كلمة أو رقم من لغة الي أخري أمر هام جدا خاصة حين تحاول أن تبني برامج تدعم لغات أخري ومن المؤكد أن هذا الأمر يشغل بال فئة من المبرمجين
و في  هذا الموضوع سنناقش بعض الأفكار التي من الممكن أن تكون نواة معقولة لكتابة برامج لترجمة النصوص او كتابة برامج مثل القاموس الإلكتروني او ما شابه ذلك.

الهدف :
مشاركة الأفكار البرمجية


الفكرة:
فكرة الموضوع هنا عبارة عن تخزين البيانات بشكل ما ثم فراءتها ثم عرضها علي المستخدم من خلال برنامجك وهذا غالبا ما يتم بأكثر من اسلوب طبقا لرؤية و هدف كل مبرمج
هذا كله من الممكن أن يتم كالتالي:

1- أن نحتفظ بالبيانات الخاصة بكل لغة في ملف ما او في عدة ملفات ثم نقوم بقراءتها وتحويلها الي مصفوفات وهذا الأسلوب مناسب جدا حين يكون هدفك أن تسمح لمستخدم البرنامج أن يضيف بيانات أو يقوم بالتعديل في البيانات التي تم تخزينها مسبقا او ما شابه ذلك

2- أن يكون برنامجك لا يدعم عمليات الاضافة والتعديل وتقوم أنت بإدخال البيانات كاملة وهنا قد تحتاج او لا تحتاج الي ملفات لتخزين البيانات لكنك ستظل في حاجة الي تخزين البيانات بشكل ما داخل البرنامج ثم تقوم بقراءة البيانات و تحويلها الي مصفوفات

في جميع الأحوال نحن في حاجة الي مصفوفتان او مصفوفة واحدة أو أكثر حيث يتم استخدام المصفوفات لقراءة البيانات و عقد المقارنات بين النصوص اللغوية ثم و بشكل اتوماتيكي تتم عملية الترجمة من لغة الي أخري

حتي الأن الأمر يبدو بسيطا وسهلا لكن لو فكرنا قليلا سنجد أننا في حاجة الي داتابيز ضخمة جدا نحتفظ فيهابالبيانات وهذا قد يحتاج الي ايام وشهور وربما سنوات لإنجازه و حتي إن استطعنا الإنتهاءمن إنجاز الداتا بيز سيظل هناك بعض القيود التي ربما تؤثر في ترجمة النصوص بكل دقة وهذه القيود من الممكن تصنيفها كالتالي

1-أسلوب إدخال البيانات بواسطة المستخدم ربما يؤثر بشكل ما علي عملية الترجمة
2-النحو ........ وهو يمثل واحدا من أكبر العوائق في ترجمة النصوص من اللغة العربية الي الإنجليزية او العكس و الدليل علي اهمية هذه الجزئية هو ان مترجم جوجل لا يترجم بشكل صحيح مائة بالمائة بسبب النحو

نقطة الإنطلاق:
البداية هنا ستكون تحويل الأرقام من اللغة الانجليزية الي اللغة العربية بدون استخدام ملفات مايكروسوفت الموجودة في الدوت نت و في واقع الأمر هذا ما يمكن ان نطلق عليه اسهل جزء في الفكرة المراد توضيحها لكنني هنا سأخذه كمثال أولي للتعبير عن الفكرة و ليكون نقطة إنطلاق لبناء شئ أفضل.

الكود:
الخطوات التالية توضح كيفية تحويل الأرقام الإنجليزية الي أرقام عربية

1- تعريف مصفوفة للأرقام الإنجليزية

PHP كود :
Dim EnglishGlyphs As IEnumerable(Of String) = New List(Of StringFrom {"0""1""2""3""4""5""6""7""8""9"

2- تعريف مصفوفة للأرقام العربية

PHP كود :
Dim ArabicGlyphs As IEnumerable(Of String) = New List(Of StringFrom {ChrW(1632), ChrW(1633), ChrW(1634), ChrW(1635), ChrW(1636), ChrW(1637), ChrW(1638), ChrW(1639), ChrW(1640), ChrW(1641)}
 
    

3- كتابة الروتين او الدالة التي ستقوم بتحويل المدخلات من الانجليزية الي العربية
واهم شئ في فكرة الدالة هو الحصول علي الرقم المسلسل الخاص بكل حرف في مصفوفة اللغة الإنجليزية ثم استخدام نفس الرقم المسلسل لإيجاد ما يقابله في اللغة العربية

كود :
  Private Function TranslateToArabic(text As String) As String
       Dim sourceValue As String = CType(text, String)
       Dim sb As System.Text.StringBuilder = CType(Nothing, System.Text.StringBuilder)
       Dim result As String = CType(Nothing, String)
       If Not (String.IsNullOrEmpty(sourceValue)) Then
           sb = New System.Text.StringBuilder
           For j As Integer = 0 To text.Length - 1
               Dim s As String = text(j)
               If EnglishGlyphs.Contains(s) Then
                   Dim index As Integer = EnglishGlyphs(s)
                   Dim arabicString As String = ArabicGlyphs(index)
                   sb.Append(arabicString)
               End If
           Next
           result = sb.ToString
       End If

       Return result
   End Function

   Public Function ToArabic(value As String) As String
       Dim valueString As String = CType(value, String)
       If Not (String.IsNullOrEmpty(valueString)) Then
           Return TranslateToArabic(valueString)
       End If
       Return CType(Nothing, String)
   End Function

4- كيفية إستخدام الكود
تعريف متغير يعبر عن الرقم المراد ترجمته الي اللغة العربية ثم بعد ذلك نقوم بتمرير القيمة الخاصة به الي الدالة التي تقوم بترجمته الي اللغة العربية

PHP كود :
       Dim s As String "20450606060"
 
       Dim result As String ToArabic(s)
 
       Me.Text result
        
' or 
        Me.TextBox1.Text = ToArabic("20450606060") 

لقد قمت بكتابة الكود علي شكل كلاس ليسهل استخدامه او تطويره وفي المرفقات ستجدون نسخة من الكود مكتوبة ببرنامج الفيجوال استوديو 2015

الكود الخاص بالكلاس كاملا

PHP كود :
Public Class NumericsShaper

    Public Sub 
New()

 
   End Sub

    Protected ReadOnly Property ArabicGlyphs 
As IEnumerable(Of String)
 
       Get
            Return 
New List(Of StringFrom {ChrW(1632), ChrW(1633), ChrW(1634), ChrW(1635), ChrW(1636), ChrW(1637), ChrW(1638), ChrW(1639), ChrW(1640), ChrW(1641)}
 
       End Get
    End Property

    Protected ReadOnly Property EnglishGlyphs 
As IEnumerable(Of String)
 
       Get
            Return 
New List(Of StringFrom {"0""1""2""3""4""5""6""7""8""9"}
 
       End Get
    End Property

    Private 
Function TranslateToArabic(text As String) As String
        Dim sourceValue 
As String CType(textString)
 
       Dim sb As System.Text.StringBuilder CType(NothingSystem.Text.StringBuilder)
 
       Dim result As String CType(NothingString)
 
       If Not (String.IsNullOrEmpty(sourceValue)) Then
            sb 
= New System.Text.StringBuilder
            For j 
As Integer 0 To text.Length 1
                Dim s 
As String text(j)
 
               If EnglishGlyphs.Contains(sThen
                    Dim index 
As Integer EnglishGlyphs(s)
 
                   Dim arabicString As String ArabicGlyphs(index)
 
                   sb.Append(arabicString)
 
               End If
 
           Next
            result 
sb.ToString
        End 
If

 
       Return result
    End 
Function

 
   Public Function ToArabic(value As String) As String
        Dim valueString 
As String CType(valueString)
 
       If Not (String.IsNullOrEmpty(valueString)) Then
            Return TranslatetoArabic
(valueString)
 
       End If
 
       Return CType(NothingString)
 
   End Function

End Class 

كيف تستخدم الكلاس أعلاه
تقوم بتعريف متغير يعبر عن الكلاس ثم تقوم بتعريف متغير عن الرقم المراد تحويله من الانجليزية الي العربية ثم نقوم بتمرير هذا المتغير الي الدالة الموجودة بالكلاس
والكود التالي يوضح هذا ويوضخ ايضا كيف من الممكن ان نرسم الحروف علي الفورم


PHP كود :
 Dim shaper As New NumericsShaper
        Me
.Text shaper.ToArabic("010999999993456")
 
       Me.TextBox1.Text shaper.ToArabic("20450606060"


PHP كود :
  Dim arabicShaper As New NumericsShaper
        e
.Graphics.DrawString(arabicShaper.ToArabic("10003456789"), New Font(Me.Font.FontFamily20.0FFontStyle.Bold), Brushes.Red, New Point(1010)) 

أتمني أن يكون الموضوع مفيدا للبعض منكم
تقبلوا تحياتي

 


الملفات المرفقة
.rar   Test_RiverNileNumericsShaper.rar (الحجم : 62.88 ك ب / التحميلات : 30)
الرد }}}}
تم الشكر بواسطة: HASAN6.0 , abulayth , hamada558


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مقارنة الكلمات و الأسماء العربية برمجيا silverlight 4 470 20-12-15, 08:34 PM
آخر رد: silverlight
  طريقة عمل برنامج زخرفة النصوص 3booody 3 1,542 19-06-13, 11:36 PM
آخر رد: Hassan Khamees
  الصورة العربية - لآ مشقة بعد الآن في إنشاء الدروس ! RaggiTech 2 777 25-04-13, 12:22 PM
آخر رد: خليل اسماعيل
  دوال التعامل مع النصوص RaggiTech 10 7,077 03-10-12, 02:41 PM
آخر رد: RaggiTech
  دروس ترجمة كتاب فيجوال بيسك 2008 خطوة خطوة RaggiTech 2 917 03-10-12, 02:22 PM
آخر رد: RaggiTech
  إجبار المستخدم على اختيار واحدة من عدة قيم محددة سابقا في صندوق النصوص RaggiTech 0 463 01-10-12, 11:33 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم