تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مشروع قاموس
#1
Lightbulb 
هذا هو شكل قاعدة البيانات الخاصة بالمشروع



عندما أحاول ترجمة كلمة (you) تتم بنجاح
ولكن مثلاً لو حاولت مع كلمة (your) فالبرنامج يترجم (you) ويترك r هكذا (rأنت)
أعرف أن الخلل فى طريقة replace  ولكنى لا أعرف طريقة أخرى
لأن البرنامج يفترض أن يترجم جمل كاملة وليست كلمات
وبالتالى يجب أن يبحث عن كل كلمة على حدة ويستبدلها داخل الجملة
البرنامج بالكامل فى المرفقات


الملفات المرفقة
.rar   Translator.rar (الحجم : 67.25 ك ب / التحميلات : 30)
الرد }}}
تم الشكر بواسطة: asemshahen5
#2
السلام عليكم ورحمة الله وبركاته
اخي الكريم هل الترجمة ستكون لكلمة واحد فقط في كل مرة ؟
ان كان كذلك فلا داع لكل هذ التعقيد
فقط جملة استعلام مثل البحث 
كود :
Private Sub BtnTranslate_Click(sender As Object, e As EventArgs) Handles BtnTranslate.Click
       Dim tbl As New DataTable
       Dim adp As New OleDbDataAdapter("SELECT * FROM [Translations] where English ='" & EnglishTextbox.Text & "'", cnn)
       adp.Fill(tbl)
       If tbl.Rows.Count > 0 Then
           ArabicTextbox.Text = tbl.Rows(0)(1)
       End If
   End Sub
اما اذا كانت الترجمة لجملة وفيها كلمات فالموضوع يختلف وليس لدي اي فكرة
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: asemshahen5 , محمد اسماعيل
#3
فقط استبدل كود For بهذا الكود
كود :
                       For Each row As DataRow In tbl.Rows
                           content = content.Replace(row.Item("English"), row.Item("Arabic"))
                       Next
يرجي الانتباه ان التحول هنا سيتم التعامل طبقاً للكتابة اذا كان حرفاً كبير او صغير
الرد }}}
#4
أخى ابراهيم ايبو
للأسف ما أريده هو ترجمة الجمل وإلا لكانت طريقتك المقترحة هى اختيارى

أخى kiki
لا يوجد أى فرق بين الكود الذى اقترحته والموجود بالفعل
يعطى نفس النتيجة عند التنفيذ
الرد }}}
تم الشكر بواسطة: asemshahen5
#5
يعطى ما تريده وليس نفس النتيجة
لان هنا هو يعتمد على التطبيق الكلى للكلمة اللى موجوده فى العمود الانجليزيى ليحوله للعربي
ويجب ان يكون متطابق كلياً للكتابة التى كتبت الا اذا كنت ستقوم بالاضافة لاكواد مثل تحول الحروف الكبيرة الى صغيرة والعكس وما شبه
الرد }}}
تم الشكر بواسطة: asemshahen5
#6
شكراً أخى لاهتمامك
أريد التطابق الكلى أيضاً مع الكلمة الموجودة فى textbox
لو راجعت الموضوع ونظرت للمثال الذى وضعته ستفهم مقصدى بسهولة
وللتوضيح قم بترجمة كلمة your كمثال وسترى النتيجة
الرد }}}
تم الشكر بواسطة: asemshahen5
#7
سيتبقي فقط وضع الجمل والكلمات فى قاعدة الباينات
ومن ثمي حتى لا تقوم باعادة ترتيب المدخلات بقاعدة البيانات من عدد الاحرف الاكبر للاقل
فقط تعال فى كود الاستعلام واضف له هذا
ORDER BY Len(English) DESC
بكده لما يعمل استبدال للكلمات سيقوم باستبدال كلمة your اولاً قبل ما يطبق استبدال you
الرد }}}
تم الشكر بواسطة: Doctor GME , عبد العزيز البسكري , asemshahen5
#8
فكرة جيدة وإضافة رائعة أخى
ولكن مازال هناك مشكلة صغيرة
لو كانت كلمة your مثلاً غير مسجلة بقاعدة البيانات وفقط you موجودة
سيحدث نفس الخطأ السابق
هل يمكن مثلاً وضع شرط أن يتعرف البرنامج على الكلمة أو حتى الجملة
فقط عندما يسبقها و يليها مسافة أو سطر جديد
وشكراً لمساعدتك
الرد }}}
تم الشكر بواسطة: asemshahen5
#9
(23-06-20, 01:19 AM)Doctor GME كتب : فكرة جيدة وإضافة رائعة أخى
ولكن مازال هناك مشكلة صغيرة
لو كانت كلمة your مثلاً غير مسجلة بقاعدة البيانات وفقط you موجودة
سيحدث نفس الخطأ السابق
هل يمكن مثلاً وضع شرط أن يتعرف البرنامج على الكلمة أو حتى الجملة
فقط عندما يسبقها و يليها مسافة أو سطر جديد
وشكراً لمساعدتك
بكل تاكيد يمكنك ذلك كل كا علك ان تعجل الكود بهذا الشكل
كود :
content = content.Replace(row.Item("English") & Space(1), row.Item("Arabic") & Space(1))
والامر الثاني حتى لا تجبر المستخدم ان ينهي الكتابة فى الكتابة بمسافة 
ان تجعل كود الزر بهذا الشكل
كود :
ArabicTextbox.Text = GetExactSubtitles(EnglishTextbox.Text & Space(1))
الرد }}}
تم الشكر بواسطة: Doctor GME , عبد العزيز البسكري , asemshahen5
#10
هذا هو الشكل النهائى
كود :
content = content.Replace(Space(1) & row.Item("English") & Space(1), Space(1) & row.Item("Arabic") & Space(1))

ويعمل بشكل جيد إذا كانت الكلمة أو الجملة يليها ويسبقها مسافة
ولكن إذا كان يسبقها أو يليها سطر جديد لا تعمل
حاولت مع هذه الصيغة:
كود :
content = content.Replace(Space(1) Or vbCrLf & row.Item("English") & Space(1) Or vbCrLf, Space(1) Or vbCrLf & row.Item("Arabic") & Space(1) Or vbCrLf)

ولكن تعطى خطأ:
Conversion from string to type long is not valid
الرد }}}
تم الشكر بواسطة: asemshahen5



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


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