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

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

الصفحات: 1 2


تعدد لغات برنامجك بطريقة سهلة - سعود - 30-06-18

السلام عليكم ورحمة الله وبركاته
اسهل طريقة لتطبيق هذه الفكرة اولا كلاس الفورم كامل :
كود :
Imports System.Xml

Public Class Form1
   Dim doc As XmlDocument
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       doc = New XmlDocument
       doc.Load("langs.txt")
       Dim nods As XmlNodeList = doc.DocumentElement.SelectNodes("//langs[@lang]")
       For r As Integer = 0 To nods.Count - 1
           ComboBox1.Items.Add(nods(r).Attributes("lang").Value)
       Next
       ComboBox1.SelectedIndex = 0
   End Sub

   Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

       If ComboBox1.Items.Count = 0 Then Exit Sub
       If ComboBox1.Text.ToLower = "عربي" Then
           Me.RightToLeftLayout = True
           Me.RightToLeft = Windows.Forms.RightToLeft.Yes
       Else
           Me.RightToLeftLayout = False
           Me.RightToLeft = Windows.Forms.RightToLeft.No
       End If



       Dim words As XmlNodeList = doc.DocumentElement.SelectNodes("//langs[@lang='" & ComboBox1.Text & "']/h")
       For r As Integer = 0 To words.Count - 1
           Dim hn As String = words(r).Attributes("name").Value
           For Each h As Control In Me.Controls
               If h.Name = hn Then
                   h.Text = (words(r).InnerText)
               End If
           Next
       Next
   End Sub
End Class






ثانيا ملف نصي باي اسم وفيه:
كود :
<AllLangs>
<langs lang="En">
<h name="lblmain">welcome here</h>
<h name="lblname">Name</h>
<h name="lblage">Age</h>
</langs>
<langs lang="عربي">
<h name="lblmain">مرحبا بكم هنا</h>
<h name="lblname">الاسم</h>
<h name="lblage">العمر</h>
</langs>
</AllLangs>
ثم المشروع مرفق

نسيت اضيف تسمية selected language
نفس الطريقةSmile
تم التعديل


RE: تعدد لغات برنامجك بطريقة سهلة - YousefOkasha - 30-06-18

شكرا لك و جزاك الله كل خير ..
هذا ما كنت احتاجة بالظبط في هذا الموضوع


RE: تعدد لغات برنامجك بطريقة سهلة - سعود - 30-06-18

(30-06-18, 11:55 AM)YousefOkasha كتب : شكرا لك و جزاك الله كل خير ..
هذا ما كنت احتاجة بالظبط في هذا الموضوع

الحمدلله ....لقد اسعدتني بهذا.


RE: تعدد لغات برنامجك بطريقة سهلة - elgokr - 30-06-18

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

لكن ما قمت انت به لخص الامور كلها فى بساطة الموضوع

لك منى +1

تحياتى لك
وتمنياتى لك التوفيق



RE: تعدد لغات برنامجك بطريقة سهلة - dubai.eig - 01-07-18

(30-06-18, 10:47 AM)سعود كتب : السلام عليكم ورحمة الله وبركاته
اسهل طريقة لتطبيق هذه الفكرة اولا كلاس الفورم كامل :
كود :
Imports System.Xml

Public Class Form1
   Dim doc As XmlDocument
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       doc = New XmlDocument
       doc.Load("langs.txt")
       Dim nods As XmlNodeList = doc.DocumentElement.SelectNodes("//langs[@lang]")
       For r As Integer = 0 To nods.Count - 1
           ComboBox1.Items.Add(nods(r).Attributes("lang").Value)
       Next
       ComboBox1.SelectedIndex = 0
   End Sub

   Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

       If ComboBox1.Items.Count = 0 Then Exit Sub
       If ComboBox1.Text.ToLower = "عربي" Then
           Me.RightToLeftLayout = True
           Me.RightToLeft = Windows.Forms.RightToLeft.Yes
       Else
           Me.RightToLeftLayout = False
           Me.RightToLeft = Windows.Forms.RightToLeft.No
       End If



       Dim words As XmlNodeList = doc.DocumentElement.SelectNodes("//langs[@lang='" & ComboBox1.Text & "']/h")
       For r As Integer = 0 To words.Count - 1
           Dim hn As String = words(r).Attributes("name").Value
           For Each h As Control In Me.Controls
               If h.Name = hn Then
                   h.Text = (words(r).InnerText)
               End If
           Next
       Next
   End Sub
End Class






ثانيا ملف نصي باي اسم وفيه:
كود :
<AllLangs>
<langs lang="En">
<h name="lblmain">welcome here</h>
<h name="lblname">Name</h>
<h name="lblage">Age</h>
</langs>
<langs lang="عربي">
<h name="lblmain">مرحبا بكم هنا</h>
<h name="lblname">الاسم</h>
<h name="lblage">العمر</h>
</langs>
</AllLangs>
ثم المشروع مرفق

نسيت اضيف تسمية selected language
نفس الطريقةSmile
تم التعديل

احسنت بارك الله فيك


RE: تعدد لغات برنامجك بطريقة سهلة - dametucorazon - 02-07-18

ماشاء الله عبقري جزاك الله خيرا


RE: تعدد لغات برنامجك بطريقة سهلة - 0theghost0 - 03-07-18

سؤال هل هذة الطريقة تناسب الى جميع الفورمات ؟؟

اذا كان عندي اكثر من فور وحدة


RE: تعدد لغات برنامجك بطريقة سهلة - elgokr - 03-07-18

(03-07-18, 07:09 PM)0theghost0 كتب : سؤال هل هذة الطريقة تناسب الى جميع الفورمات ؟؟

اذا كان عندي اكثر من فور وحدة


بكل تاكيد اخى الحبيب

ما قدمه الاخ سعود هى كا فكرة

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

تحياتى لك
وتمنياتى لك التوفيق



RE: تعدد لغات برنامجك بطريقة سهلة - sendbad100 - 04-07-18

(03-07-18, 07:09 PM)0theghost0 كتب : سؤال هل هذة الطريقة تناسب الى جميع الفورمات ؟؟

اذا كان عندي اكثر من فور وحدة

الشكر كل الشكر للاخ  Heart  سعود   Heart  دائما مبدع ويحب الخير للجميع

يمكنك الاستغناء عن الملف النصي 

واستخدام جدول في قاعدة البينات قاعدة بيانات اخرى اكسس

وتضع فيها  حتى ترجمة رسائل التنبية 


سيكون اسهل   بالذات اذا لديك الكثير من الفورمات والرسائل 


   |   ID       |       AR       |     EN     |



RE: تعدد لغات برنامجك بطريقة سهلة - سعود - 04-07-18

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