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

نسخة كاملة : تعدد لغات برنامجك بطريقة سهلة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله وبركاته
اسهل طريقة لتطبيق هذه الفكرة اولا كلاس الفورم كامل :
كود :
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
تم التعديل
شكرا لك و جزاك الله كل خير ..
هذا ما كنت احتاجة بالظبط في هذا الموضوع
(30-06-18, 11:55 AM)YousefOkasha كتب : [ -> ]شكرا لك و جزاك الله كل خير ..
هذا ما كنت احتاجة بالظبط في هذا الموضوع

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

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

لك منى +1

تحياتى لك
وتمنياتى لك التوفيق
(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
تم التعديل

احسنت بارك الله فيك
ماشاء الله عبقري جزاك الله خيرا
سؤال هل هذة الطريقة تناسب الى جميع الفورمات ؟؟

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

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


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

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

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

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

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

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

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

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

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


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


   |   ID       |       AR       |     EN     |
بارك الله فيكم جميعا وشكر لكم .
كنت اريد استخدام ملفات تعريب منتديات  vbulletin جاهز لكن قلت اجعلها ملف نصي بسيط.
ميزة الملف النصي هي السرعة.
الصفحات : 1 2