منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] مشروع قاموس - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] مشروع قاموس (/showthread.php?tid=35332)

الصفحات: 1 2


مشروع قاموس - Doctor GME - 22-06-20

هذا هو شكل قاعدة البيانات الخاصة بالمشروع



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


RE: مشروع قاموس - ابراهيم ايبو - 22-06-20

السلام عليكم ورحمة الله وبركاته
اخي الكريم هل الترجمة ستكون لكلمة واحد فقط في كل مرة ؟
ان كان كذلك فلا داع لكل هذ التعقيد
فقط جملة استعلام مثل البحث 
كود :
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
اما اذا كانت الترجمة لجملة وفيها كلمات فالموضوع يختلف وليس لدي اي فكرة


RE: مشروع قاموس - kiki - 22-06-20

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


RE: مشروع قاموس - Doctor GME - 22-06-20

أخى ابراهيم ايبو
للأسف ما أريده هو ترجمة الجمل وإلا لكانت طريقتك المقترحة هى اختيارى

أخى kiki
لا يوجد أى فرق بين الكود الذى اقترحته والموجود بالفعل
يعطى نفس النتيجة عند التنفيذ


RE: مشروع قاموس - kiki - 22-06-20

يعطى ما تريده وليس نفس النتيجة
لان هنا هو يعتمد على التطبيق الكلى للكلمة اللى موجوده فى العمود الانجليزيى ليحوله للعربي
ويجب ان يكون متطابق كلياً للكتابة التى كتبت الا اذا كنت ستقوم بالاضافة لاكواد مثل تحول الحروف الكبيرة الى صغيرة والعكس وما شبه


RE: مشروع قاموس - Doctor GME - 22-06-20

شكراً أخى لاهتمامك
أريد التطابق الكلى أيضاً مع الكلمة الموجودة فى textbox
لو راجعت الموضوع ونظرت للمثال الذى وضعته ستفهم مقصدى بسهولة
وللتوضيح قم بترجمة كلمة your كمثال وسترى النتيجة


RE: مشروع قاموس - kiki - 22-06-20

سيتبقي فقط وضع الجمل والكلمات فى قاعدة الباينات
ومن ثمي حتى لا تقوم باعادة ترتيب المدخلات بقاعدة البيانات من عدد الاحرف الاكبر للاقل
فقط تعال فى كود الاستعلام واضف له هذا
ORDER BY Len(English) DESC
بكده لما يعمل استبدال للكلمات سيقوم باستبدال كلمة your اولاً قبل ما يطبق استبدال you


RE: مشروع قاموس - Doctor GME - 23-06-20

فكرة جيدة وإضافة رائعة أخى
ولكن مازال هناك مشكلة صغيرة
لو كانت كلمة your مثلاً غير مسجلة بقاعدة البيانات وفقط you موجودة
سيحدث نفس الخطأ السابق
هل يمكن مثلاً وضع شرط أن يتعرف البرنامج على الكلمة أو حتى الجملة
فقط عندما يسبقها و يليها مسافة أو سطر جديد
وشكراً لمساعدتك


RE: مشروع قاموس - kiki - 23-06-20

(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))



RE: مشروع قاموس - Doctor GME - 23-06-20

هذا هو الشكل النهائى
كود :
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