السلام عليكم ورحمة الله وبركاته
يمكن تعريف لغة الادخال بانها مخطط يتكون من الثقافة المحلية ولوحة المفاتيح،يتحكم فى تناظر المفاتيح الطبيعية الموجودة على لوحة المفاتيح مع حروف احدى اللغات. ويحتوى نظام .NET Framework على مجموعة من الفئات التى تحتوى على طرقMethods وخصائصProperty للتعامل مع لغة الادخال اهمها ما يلى :
• الفئة InputLanguage
• الفئة InputLaguageChangedEventArgs
• الفئة InputLaguageChangingEventArgs
الفئة InputLanguage :
تحتوى هذه الفئة على خواص،وطرق،وحقول، لادارة لغة الادخال. وفيما يلى عرض لاهم هذه الخصائص والوسائل واستخداماتها :
خاصية InstalledInputLanguages :
تستخدم هذه الخاصية للحصول على قائمة بجمبع لغات الادخال المثبتة بالنظام.الكود التالى يستخدم مربع نص وبعد ضبظ خاصية MultiLine على True
حيث يتم فيه سرد جميع اللغات المثبتة على النظام:
Dim lang As InputLanguage For Each lang In InputLanguage.InstalledInputLanguages Me.TextBox1.Text &= lang.Culture.EnglishName & ControlChars.CrLf
خاصية Culture :
تستخدم هذه الخاصية فى الحصول على الثقافة الخاصة بلغة الادخال الحالية.وتعود هذه الخاصية بكائن من الفئة CultureInfo والذى يحتوى علىمعلومات الثقافة الخاصة بلغة الادخال الحالية، مثل اسم الثقافة،نظام الكتابة،التقويم المستخدم،ومعلومات اخرى
Dim myCurrentLanguage As InputLanguage = InputLanguage.CurrentInputLanguage Dim myCultureInfo As System.Globalization.CultureInfo = myCurrentLanguage.Culture Me.TextBox1.Text = myCultureInfo.EnglishName
خاصية Handle
تستخدم هذه الخاصية فى الحصول على مقبض لغة الادخال.وقيمة هذه الخاصية من نوع مؤشر لعدد صحيح(IntPtr) .
Dim myCurrentLanguage As InputLanguage = InputLanguage.CurrentInputLanguage Dim myHandle As IntPtr = myCurrentLanguage.Handle Me.TextBox1.Text = "The handle number is :" & myHandle.ToString
الطريقة Equals
تختبر هذه الوسيلة وجود المساواة بين لغتين من لغات الادخال. وتتطلب تمرير كائن يمثل اللغة التى يتم اختبارها. ويترتب على تنفيذها اعادة قيمة منطقية
الطريقة FromCulture
تعيد هذه الطريقة لغة الادخال المرتبطة مع ثقافة معينة، وتتطلب تمرير كائن من نوع CultureInfo لتحديد ثقافة المستخدم. ويترتب على نجاح تنفيذ هذه الطرية الحصول على كائن يمثل لغة الادخال المستعملة مع هذه الثقاقة.
الفئة InputLanguageChangedEventArgs & InputLaguageChangingEventArgs
توفر هذه الفئة الوسيطات اللازمة لحدث InputLanguageChanged.و InputLanguageChanging
على التوالى ويمكن استخدام البيانات التى نحصل عليها من الفئتين فى اتخاذ قرارات خاصة بتغيير اتجاه النصوص لكى تصبح من اليمين الى اليسار او العكس . ويمكن ايضا استخدام هذه المعلومات لتغيير خاصية CurrentCulture وخاصية CurrentUICulture المستخدمة فى تحويل التطبيقات نحو استخدام الثقافات المحلية.وتقوم هذه الفئة بالتعرف على الثقافة المحلية ومجموعة الحروف المستخدمة فى لغة الادخال الجديدة . ومن خواص هذه الفئة
خاصية CharSet
تستخدم هذه الخاصية فى الحصول على مجموعة المحارف المتعلقة بلغة الادخال الجديدة. وتعيد قيمة من نوع Integer تمثل الرقم المميز لمجموعة المحارف
فمثلا لــARABIC_CHARSET القمية 178 ولـEASTEUROPE_CHARSET القيمة 238
لمعرفة باقى القيم والمجموعات راجع MSDN
خاصية Culture
تستخدم هذه الخاصية فى الحصول على الثقافة الخاصة بلغة الاخال الجديدة. وتحتوى على كائن من نوع CultureInfo
خاصية InputLanguage
تستخدم هذه الخاصية فى الحصول على قيمة تشير الى لغة الادخال الجديدة
الحدث InputLanguageChanged
يقع هذا الحدث بعد تغيير لغة الادخال. ويمكن استخدامه لاحداث تغييرات فى مظهر النموذج وفى النصوص الى تعتمد على لغة الادخال. وتستقبل هذه الخاصية ووسيطة من الفئة
InputLanguageChangedEventArgs
والذى يحتوى على بيانات تتعلق بهذا الحدث. ويتم توفير هذه البيانات عن طريق خصائص مثل: خاصية Culuter;InputLanguage,CharSet السابق ايضاحها.
الكود التالى يقوم بمعالجة الحدث InputLanguageChanged للحصول على اسم اللغة الادخال التى تم التغيير اليها. ثم يقوم الاجراء بعد ذلك بمقارنة رمز الادخال مع رمز اللغة العربية. وعند تحقق الشرط، يتم تحويل اتجاه النصوص فى Box RichText ليبدأ من اليمين لليسار
Private Sub Form1_InputLanguageChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.InputLanguageChangedEventArgs) Handles Me.InputLanguageChanged
If e.InputLanguage.Culture.TwoLetterISOLanguageName.Equals("ar") Then
Me.RichTextBox1.RightToLeft = Windows.Forms.RightToLeft.Yes
End If
End Subتطبيق على تغيير لغة الادخال بتطبيقات الويندوز
المثال يوجد فى المرفقات ويعمل على vb.net 2005 لمن لا يوجد لده هذا الاصدار هذا هو كود البرنامج
حيث يتم سرد رموز جميع لغات الادخال المثبته على النظام فى ListBox وعند النقر على اى منها يتم تغيير لغة الادخال
Public Class Form1
Private Sub Form1_InputLanguageChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.InputLanguageChangedEventArgs) Handles Me.InputLanguageChanged
If e.InputLanguage.Culture.TwoLetterISOLanguageName.Equals("ar") Then
Me.RightToLeft = Windows.Forms.RightToLeft.Yes
Else
Me.RightToLeft = Windows.Forms.RightToLeft.No
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each lang As InputLanguage In InputLanguage.InstalledInputLanguages
Me.ListBox1.Items.Add(lang.Culture.TwoLetterISOLanguageName)
Next
End Sub
Private Sub ListBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.Click
For Each lang As InputLanguage In InputLanguage.InstalledInputLanguages
If lang.Culture.TwoLetterISOLanguageName = Me.ListBox1.SelectedItem.ToString Then
InputLanguage.CurrentInputLanguage = lang
End If
Next
End Sub
End Classبالتوفيق للجميع

