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

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

هذه الطريقة تستخدمها أغلب الشركات الكبرى
مثال برنامج Internet Download Manager


وليس صنع برنامج متعدد اللغات فقط , بل متعدد اللهجات أيضاً


والطريقة كالتالي :

نعمل مشروع جديد :

نقوم بإضافة :
ComboBox1
إختر اللغة: =Label1
Label2 = Phone



نعمل إستيراد لمكتبة Globalization ومكتبة ComponentModel

كود :
Imports System.Globalization
Imports System.ComponentModel


نضع هذه الكود في تصاريح عامة

كود :
   Private Sub ChangeLanguage(ByVal Language As String)

       For Each c As Control In Me.Controls

           Dim crmLang As ComponentResourceManager = New ComponentResourceManager(GetType(Form1))

           crmLang.ApplyResources(c, c.Name, New CultureInfo(Language))

       Next c

هذا الكود في لود الفورم


كود :
       ComboBox1.Items.Add("English")
       ComboBox1.Items.Add("العربية - السعودية")
       ComboBox1.Items.Add("العربية - مصر")
       ComboBox1.Items.Add("العربية - الأردن")

       If ComboBox1.SelectedIndex = 0 Then  '
           ChangeLanguage("en-us")
       End If


       If ComboBox1.SelectedIndex = 1 Then
           ChangeLanguage("ar-SA")
       End If


       If ComboBox1.SelectedIndex = 2 Then
           ChangeLanguage("ar-EG")
       End If

       If ComboBox1.SelectedIndex = 3 Then
           ChangeLanguage("ar-JO")
       End If


       '-----------------------------------------------------------
       Dim myCurrentLanguage As InputLanguage = InputLanguage.CurrentInputLanguage

       If myCurrentLanguage.Culture.EnglishName = "English (United States)" Then
           ComboBox1.SelectedIndex = 0
       End If

       If myCurrentLanguage.Culture.EnglishName = "Arabic (Saudi Arabia)" Then
           ComboBox1.SelectedIndex = 1
       End If

       If myCurrentLanguage.Culture.EnglishName = "Arabic (Egypt)" Then
           ComboBox1.SelectedIndex = 2
       End If


       If myCurrentLanguage.Culture.EnglishName = "Arabic (Jordan)" Then
           ComboBox1.SelectedIndex = 3
       End If


هذا الكود في الكومبو بوكس


كود :
       If ComboBox1.SelectedIndex = 0 Then

           ChangeLanguage("en-us")

       ElseIf ComboBox1.SelectedIndex = 1 Then

           ChangeLanguage("ar-SA")

       Else

           ChangeLanguage("ar-EG")

       End If



الآن من خصائص الفورم نختار خيار Localizable ونجعل قيمته False
( لعدم خروج الادوات من الفورم )




من خصائص الفورم نختار خيار Language

ونختار جميع المناطق اللتي نريد

مثلا نختار ( العربية - السعودية ) و نغير اسم الليبل إلى ( الجوال  )
ثم نعود مره اخرى لخيار Language ونختار ( العربية - مصر ) ونغير اسم الليبل إلى ( المحمول )
ثم نعود مره اخرى لخيار Language ونختار ( العربية - الأردن) ونغير اسم الليبل إلى ( الخلوي)

بعد إختيار جميع اللغة اللتي تريد نغير خيار Language إلى (Default)



وهذا الشرح بالفيديو لكن مثال آخر

من الدكتور / محمد ناجح جزاه الله عنا خير الجزاء

[/url]https://www.youtube.com/watch?v=s7ixEl74RpE
[url=http://www.codeguru.com/columns/vb/localization-in-vb.net.htm]

ملاحظة هامة جداً :

في مجلد الديباج ( Debug ) نجلد مجلدات للغة الدول المحددة يجب نقل هذه المجلدات مع الملف التنفيذي
مثل قاعدة البيانات
بارك الله فيك اخي سعود
شكراً جزيلاً
العفو يالامير

ومنور يالغالي
لدي استفسار مهم اذا عندي اكثر من فورمة مالعمل ليقم بالترجمة ؟؟

ما الكود المضاف في الفورمات الباقي ليقوم بالترجمة ؟
بارك الله فيك وشكرا جزيلاً اخي الكريم
جزاك الله خيرا
بارك الله فيك اخي سعود
شكراً جزيلاً