تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[مشروع] تعدد لغات برنامجك بطريقة سهلة
#1
السلام عليكم ورحمة الله وبركاته
اسهل طريقة لتطبيق هذه الفكرة اولا كلاس الفورم كامل :
كود :
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
تم التعديل


الملفات المرفقة
.zip   MultiLanguage_Custom_idea.zip (الحجم : 30.21 ك ب / التحميلات : 158)
#2
شكرا لك و جزاك الله كل خير ..
هذا ما كنت احتاجة بالظبط في هذا الموضوع
تم الشكر بواسطة: سعود , elgokr
#3
(30-06-18, 11:55 AM)YousefOkasha كتب : شكرا لك و جزاك الله كل خير ..
هذا ما كنت احتاجة بالظبط في هذا الموضوع

الحمدلله ....لقد اسعدتني بهذا.
تم الشكر بواسطة: elgokr , YousefOkasha , sendbad100
#4
سبقتنى اليوم اخى سعود
كنت ساعمل على عمل 
واجهة بطريق مختلفة لتعدد اللغات

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

لك منى +1

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
تم الشكر بواسطة: عبد العزيز البسكري , سعود , sendbad100
#5
(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
تم التعديل

احسنت بارك الله فيك
تم الشكر بواسطة: elgokr , سعود
#6
ماشاء الله عبقري جزاك الله خيرا
تم الشكر بواسطة: elgokr , elgokr , سعود
#7
سؤال هل هذة الطريقة تناسب الى جميع الفورمات ؟؟

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

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


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

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

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

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


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

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

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

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

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

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


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


   |   ID       |       AR       |     EN     |
تم الشكر بواسطة: elgokr , عبد العزيز البسكري , سعود
#10
بارك الله فيكم جميعا وشكر لكم .
كنت اريد استخدام ملفات تعريب منتديات  vbulletin جاهز لكن قلت اجعلها ملف نصي بسيط.
ميزة الملف النصي هي السرعة.
تم الشكر بواسطة: sendbad100 , elgokr


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [مشروع] انتاج نسخه تجريبية من برنامجك لوقت محدد و اكتشاف تلاعب المستخدم بساعه الجهاز myalsailamy 4 2,261 02-06-19, 10:31 AM
آخر رد: hamadro
Rainbow كيفية عمل الشجرة المحاسبية بطريقة احترافية asemshahen5 29 2,306 29-03-19, 01:46 AM
آخر رد: asemshahen5
  [VB.NET] الطريقة الصحيحة لجعل برنامجك متعدد اللغات سعود الشامان 4 1,483 15-01-19, 12:14 AM
آخر رد: AymanRamadanSaad
  [درس فيديو] التحكم الكامل في إدارة المستخدمين وإنشاء صلاحياتهم في برنامجك من خلال SQL SERVER 2016 عبدالله الدوسري 7 6,544 02-10-18, 10:58 AM
آخر رد: sendbad100
  [مشروع] مشاركة بسيطة [مشاهدة احصائية الموقع من برنامجك] سعود 10 1,160 16-06-18, 09:35 AM
آخر رد: سعود
  [VB.NET] جعل برنامجك تجريبى بالايام مع تخطى ثغرة تغيير التاريخ بدون الاتصال بالانترنت mohamed haroon 6 2,331 15-06-16, 11:44 PM
آخر رد: خالد الرماح
  [مثال] عمل تصفية للبيانات بطريقة سهلة ممدوح الخطيب 3 1,683 21-06-15, 01:07 AM
آخر رد: raaddawood
Rainbow مثال - استخدام My.Setting لتغيير خصائص برنامجك Genius Live 3 3,242 14-07-14, 04:48 AM
آخر رد: djelloul

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


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