PDA

View Full Version : تبدیل فینگلیش به فارسی



barnamenevisjavan
دوشنبه 31 تیر 1392, 13:32 عصر
سلام با کد کاربر هرچی توی تکسباکس بصورت فینگلیش بنویسه همون لحظه معادل فارسی اون نوشته میشه
مشکلی که هست اینه که مثلا اگر یه متن فینگلیش رو کپی و پست کنیم برنامه دیگه عمل تبدیل رو انجام نمیده چطوری این مشکل رو حل کنیم؟
private void Textbox1_KeyPress(object sender, KeyPressEventArgs e)
{
switch (e.KeyChar.ToString())
{
// حروف الفبا
case "q": e.KeyChar = 'ض'; break;
case "w": e.KeyChar = 'ص'; break;
case "e": e.KeyChar = 'ث'; break;
case "r":
case "R": e.KeyChar = 'ق'; break;
case "t": e.KeyChar = 'ف'; break;
case "y": e.KeyChar = 'غ'; break;
case "u": e.KeyChar = 'ع'; break;
case "i": e.KeyChar = 'ه'; break;
case "o": e.KeyChar = 'خ'; break;
case "p": e.KeyChar = 'ح'; break;
case "[": e.KeyChar = 'ج'; break;
case "]": e.KeyChar = 'چ'; break;
case "a": e.KeyChar = 'ش'; break;
case "s": e.KeyChar = 'س'; break;
case "d": e.KeyChar = 'ی'; break;
case "f": e.KeyChar = 'ب'; break;
case "g": e.KeyChar = 'ل'; break;
case "h": e.KeyChar = 'ا'; break;
case "j": e.KeyChar = 'ت'; break;
case "k": e.KeyChar = 'ن'; break;
case "l": e.KeyChar = 'م'; break;
case ";": e.KeyChar = 'ک'; break;
case "'": e.KeyChar = 'گ'; break;
case "\\": e.KeyChar = 'پ'; break;
case "z": e.KeyChar = 'ظ'; break;
case "x": e.KeyChar = 'ط'; break;
case "c": e.KeyChar = 'ز'; break;
case "v": e.KeyChar = 'ر'; break;
case "b": e.KeyChar = 'ذ'; break;
case "n": e.KeyChar = 'د'; break;
case "m": e.KeyChar = 'ئ'; break;
case ",": e.KeyChar = 'و'; break;
// نشانه های الفبا
case "Q": e.KeyChar = 'ً'; break;
case "W": e.KeyChar = 'ٌ'; break;
case "E": e.KeyChar = 'ٍ'; break;
case "T": e.KeyChar = '،'; break;
case "Y": e.KeyChar = '؛'; break;
case "U": e.KeyChar = ','; break;
case "I": e.KeyChar = ']'; break;
case "O": e.KeyChar = '['; break;
case "P": e.KeyChar = '\\'; break;
case "{": e.KeyChar = '}'; break;
case "}": e.KeyChar = '{'; break;
case "A": e.KeyChar = 'َ'; break;
case "S": e.KeyChar = 'ُ'; break;
case "D": e.KeyChar = 'ِ'; break;
case "F": e.KeyChar = 'ّ'; break;
case "G": e.KeyChar = 'ۀ'; break;
case "H": e.KeyChar = 'آ'; break;
case "J": e.KeyChar = 'ـ'; break;
case "K": e.KeyChar = '«'; break;
case "L": e.KeyChar = '»'; break;
case "Z": e.KeyChar = 'ة'; break;
case "X": e.KeyChar = 'ي'; break;
case "C": e.KeyChar = 'ژ'; break;
case "V": e.KeyChar = 'ؤ'; break;
case "B": e.KeyChar = 'إ'; break;
case "N": e.KeyChar = 'أ'; break;
case "M": e.KeyChar = 'ء'; break;
case "?": e.KeyChar = '؟'; break;
case "OEM_2": e.KeyChar = '?'; break;
default:
break;
}
}

saied_hacker
دوشنبه 31 تیر 1392, 13:46 عصر
کد بالا رو تبدیل کن به یک تابع که رشته/کاراکتر رو از یه جایی میگیره و معدال رو به عناون خورجی میده
بعد توی keypress تابع رو فراخوانی کن ( اینجوری بهتره )
برای حل کردن مشکل کپی پیست هم ار event های textbox از textchanged استفاده کن ... ( اگر تابع تعریف کنی فقط کافی مجدد تابع رو اینجا فراخوانی کنی ).

danialafshari
دوشنبه 31 تیر 1392, 14:10 عصر
سلام
کد رو چک کنید! این که فینگلیش نیست
فینگلیش اینه که اگه زدی "Salam" برنامه برات بنویسه "سلام"
خب این کد عین اینه که کیبورد رو روی فارسی گذاشته باشید
موفق باشی

barnamenevisjavan
دوشنبه 31 تیر 1392, 16:29 عصر
سلام
کد رو چک کنید! این که فینگلیش نیست
فینگلیش اینه که اگه زدی "Salam" برنامه برات بنویسه "سلام"
خب این کد عین اینه که کیبورد رو روی فارسی گذاشته باشید
موفق باشی
شما اونش رو ول کنم خودمم میدونم فینگلیش چیه برای اینکه پست پاک نشه باید عنوان مناسب نوشت

esafb52
سه شنبه 01 مرداد 1392, 02:57 صبح
با سلام شاید خیلی جالب کد نزده باشم ولی من اینجوری حلش کردم
public string ConvertFeinglishtoFarsi(string input)
{
char[] arrhrof = input.ToCharArray();
int i = 0;
foreach (char c in arrhrof)
{

switch (c)
{
case 'q': arrhrof[i] = 'ض'; break;
case 'w': arrhrof[i] = 'ص'; break;
case 'e': arrhrof[i] = 'ث'; break;
case 'r': arrhrof[i] = 'ق'; break;
case 't': arrhrof[i] = 'ف'; break;
case 'y': arrhrof[i] = 'غ'; break;
case 'u': arrhrof[i] = 'ع'; break;
case 'i': arrhrof[i] = 'ه'; break;
case 'o': arrhrof[i] = 'خ'; break;
//وبقیه حروف رو هم همین طوربنویسید بصورت کراکتر!!!
default:
break;
}
i++;

}
string end = new string(arrhrof);
return end;

}
و استفاده هم
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text= ConvertFeinglishtoFarsi(textBox1.Text.ToString());
}

barnamenevisjavan
سه شنبه 01 مرداد 1392, 10:43 صبح
کد خوبی هستش جواب هم داد فقط یک نکته/این کدا فقط یک کاراکتر رو ترجمه میکنه مثلا من میخوام هر وقت این کلمه نوشته شد OEM_2 معادلش کاراکتر ؟ نوشته بشه

m.rostamynejad
سه شنبه 31 فروردین 1395, 03:34 صبح
با سلام
‌درسال 91 ايران شيونامه لاتين نويسی را مصوب کرد
و این شيوه نامه درسال2012 در سازمان ملل پذيرفته شد.
http://isna.ir/fa/news/91122113926
کانال آموزش درست و استاندارد (فارگليسی/فينگليش)لاتين نويسی
https://telegram.me/Alefbaye2om


آدرس وبگاه:
fa.Alefbaye2om.org
و
http://www.behnevis.com/