PDA

View Full Version : سوال: تبدیل زبان کیبورد از انگلیسی به فارسی و بلعکس



R.nosratabadi
شنبه 02 خرداد 1388, 16:16 عصر
سلام به همه دوستان،
میخواستم بدونم کد تبدیل زبان کیبورد از انگلیسی به فارسی چیه؟
لطفا راهنماییم کنید.
متشکرم

وحید پیرمرادیان
شنبه 02 خرداد 1388, 16:23 عصر
با سلام.

ابتدا کلاس زیر را به برنامه بیافزایید:




publicclasswin32
{
[DllImport("user32.dll", SetLastError = true)]
publicstaticexternint LoadKeyboardLayoutA(String pwszKLID, int Flags);
}



حال برای فارسی کردن صفحه کلید از کد زیر استفاده کنید:




System.PlatformID platform = Environment.OSVersion.Platform;
System.String windowstype = platform.ToString();
if (windowstype == "Win32NT")
win32.LoadKeyboardLayoutA("00000429", 1);
if (windowstype == "Win32Windows" || windowstype == "Win32S")
win32.LoadKeyboardLayoutA("00000401", 1);



و برای انگلیسی کردن زبان صفحه کلید از کد زیر استفاده کنید:




win32.LoadKeyboardLayoutA("00000409", 1);



در ضمن برای فراخوانی فایل هایی dll در برنامه فراموش نکنید فضای نام System.Runtime.InteropServicesرا به برنامه بیافزایید.



موفق باشید.

esmaeily-hosein
شنبه 02 خرداد 1388, 16:45 عصر
کلا سعی کن تو .Net کمتر از API ها استفاده کنی چرا که باعث ایجاد حفره در برنامه میشه .



private void ChangeInputLanguage(string cultureName)
{
InputLanguage lang = (from i in InputLanguage.InstalledInputLanguages.Cast<InputLanguage>()
where i.Culture.Name == cultureName
select i).SingleOrDefault();
if (lang != null) InputLanguage.CurrentInputLanguage = lang;
}

//Use

ChangeInputLanguage("en-US");
ChangeInputLanguage("fa-IR");

R.nosratabadi
سه شنبه 05 خرداد 1388, 10:37 صبح
هر دو روش رو امتحان کردم اما با خطاهای زیر روبرو شدم:
اولی:
Error 1: The type or namespace name 'DllImport' could not be found (are you missing a using directive or an assembly reference?)
مشکل از چیه؟

دومی:
Error 1: ) expected : in "i" point
Error 2: ; expected : in "in" point
Error 3: Invalid expression term 'in' : in "in" point
Error 4: ; expected : in "InputLanguage" point
Error 5: ; expected : in "where" point
Error 6: ; expected : in "i." point
Error 7: Invalid expression term '.' : in "i." point
Error 8: ; expected : in "Culture" point
Error 9: ; expected : in "select" point
Error 10: ; expected : in ")" point
Error 11: Invalid expression term ')' : in ")" point
مشکل این چیه؟
واقعا به این کد احتیاج دارم. ممنون می شم کمکم کنید.

shaki_phd
سه شنبه 05 خرداد 1388, 12:39 عصر
سلام دوست عزيز فكر كنم اگه سرچ ميكردي كلي كد توي سايت پيدا مي كردي
اما در هر صورت من هميشه تو برنامه هام از اين كد استفاده مي كنم
دو تا تابع هستش كه با فراخواني هركدوم كيبوردت همون زبان ميشه



public static void Englishkey()
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new System.Globalization.CultureInfo("en-US"));
}
public static void Farsikey()
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new System.Globalization.CultureInfo("fa-IR"));
}



موفق باشيد

وحید پیرمرادیان
سه شنبه 05 خرداد 1388, 14:03 عصر
[quote=R.nosratabadi;729506]هر دو روش رو امتحان کردم اما با خطاهای زیر روبرو شدم:
اولی:
Error 1: The type or namespace name 'DllImport' could not be found (are you missing a using directive or an assembly reference?)
مشکل از چیه؟

دوست عزیز این خطا از آنجاست که شما فضای نام
using System.Runtime.InteropServices را به برنامه خود اضافه نکرده اید. این فضای نام برای استفاده فایل های dll در برنامه است.

موفق باشید.

saied_genius
پنج شنبه 03 دی 1388, 16:13 عصر
InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages[1];


بر اساس نياز index داخل گيومه را تغيير دهيد.

موفق باشيد.

sky_in_iran
پنج شنبه 03 دی 1388, 16:25 عصر
سلام دوست عزيز خيلي آسونه :




using System.Globalization;
CultureInfo farsi = new CultureInfo("fa-IR");
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(farsi);


اين كدو تو loadform بزار هرجاي فرم تايپ كني فاري ميشه

ayat2006
چهارشنبه 27 فروردین 1393, 18:37 عصر
تاپیک قدیمیه ولی گفتم این روش رو هم بگم شاید بدرد کسی بخوره:

using System.Threading;
using System.Globalization;

public void farsi() {
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fa-IR");
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("fa-IR"));
}
public void English()
{
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("en-US"));
}
بعد می تونی مثلا در رویداد Enter یه تکست باکس هر کدوم رو خواستی صدا بزنی .

momimomi
چهارشنبه 27 فروردین 1393, 18:49 عصر
ممنون از جواب
بهتر نیست به جای کلمه تایپیک از واژه صحیح آن که تاپیک هست استفاده کنیم دوست عزیز؟
topic= مبحث, عنوان
باعرض پوزش