الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية تحويل اللغة تلقائيا الى العربية

مغلق
بدأه PARADISE في 14 أبريل 2003 · 7 رد · 5,659 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

انشأت بر نامج يحتوى على مربعات نص TextBox

عند تشغيل البرنامج والكتابة في مربع النص هذا أجد ان اللغة هي اللغة الانجليزية

وحتى أكتب بالعربية يجب أن أضغط أولا alt+shift الموجودين من الناحية اليمنى من لوحة المفاتيح

ألا توجد طريقة تجعل مربع النص يكتب تلقائيا باللغة العربية بدون ضغط alt+shift

؟؟؟؟؟

أرجو الاهتمام

#2

هيا صراحة نفس امر ال API الذي يستخدم في فيجوال بيزك 6 سابقا ، انا لا اتذكره الان ولكنه نفس امر ال API حيث يجب الاتصال به اولا و توجيه الى ال handle الخاص بال textbox ليقلب اتجاه المؤشر

#3

ألف شكر لك أخ خضر

والحمد لله

دالة ال API هى:

ActivateKeyboardLayout

والله تعبت كتير لغاية لما عرفتها

#4

حسنا، انا فحصت الدالة في MSDN و توصلت للكود التالي

يجب اضافة الكائن التالي الى كود البرنامج (بالطبع تعديل ال namespace الى الخاصة ببرنامجك)

namespace SmartLibrary._Common
{
	public class IXNativeAPI
	{
		public const uint KLF_ENGLISH = 0x00000409;
		public const uint KLF_ARABIC = 0x00000401;

		[DllImport("User32.dll", CharSet=CharSet.Auto)]
		public static extern uint ActivateKeyboardLayout(uint hkl, uint Flags);
	}
}

للتحويل الي العربية

IXNativeAPI.ActivateKeyboardLayout(IXNativeAPI.KLF_ARABIC, 0);

للتحويل الى الانجليزية

IXNativeAPI.ActivateKeyboardLayout(IXNativeAPI.KLF_ENGLISH, 0);

انا صراحة اعجبتني الفكرة و سوف اضيف لاحقا الكائن LTTextBox الى المكتبة التي باقوم بكتابتها الان، ليرث ال text box العادي و يضيف اليه خاصية جديدة لتحدد اتجاه لوحة المفاتيح للمربع النص نفسه

بالمناسبة الكود السابق جرب على Windows 2003 و على Windows XP ، سوف يعمل طبيعيا على Windows 2000 و ربما تحدث مشاكل على Windows 98/ME ، يجب تجربته هناك و اذا حدثت مشاكل فهناك امرين اضافيين في مكتبة MSDN اظن يجب استخدام احدهما ، اضافة الى الاوامر السابقة

#5

شكرا لك أخ خضر

فأنت متميز كعادتنا بك دائما :D

أنا عملت نفس الوظيفة بأسلوب مختلف قليلا

عند تحميل ال form

[DllImport ("user32.dll", CharSet = CharSet.Auto)]

public static extern int

GetKeyboardLayout(int idThread);

[DllImport ("user32.dll", CharSet = CharSet.Auto)]

public static extern int

ActivateKeyboardLayout(int hkl,int Flags);

ثم عملت function اناديها عند التحميل

private void to_arabic()

{

int current_lang=GetKeyboardLayout(0);

if (current_lang == 67699721)

{

int res;

res =ActivateKeyboardLayout(0 ,1 );

}

//MessageBox.Show("after "+GetKeyboardLayout(0).ToString());

}

(f)(f)(f)(f)(f)

#6

شكرا على المجاملة :D

اليوم و انا باتصفح MSDN لاحل مشكلة لدي صدفت و لاحظت الاوامر التالية:

InputLanguage.CurrentInputLanguage =InputLanguage.FromCulture(new System.Globalization.CultureInfo("ar-SA"));

InputLanguage.CurrentInputLanguage =InputLanguage.FromCulture(new System.Globalization.CultureInfo("en-US"));

اتضح بان .net تحتوي على اوامر خاصة لقلب لغة لوحة المفاتيح، الاول يقلبها للعربية و الثاتي يقلبها للانجليزية

#7

في اثناء تصفحي وجدت البرنامج التالي بالكود المصدر يختص بتحويل لغة لوحة المفاتيح.

ملاحظة : "البرنامج يحول اللغة من الانجليزية الى العبرية وبالعكس , يمكنكم تعديل الكود ليتم تحويله الى العربية".

keyboardlayout_and_language_selector.zip

#8

كود جميل، ممكن أحد يحوله ليناسب اللغة العربية و يضعه بالمنتدى؟

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…