Mirza
Mirza
خواندن ۱ دقیقه·۲ سال پیش

تبدیل حروف فارسی به انگلیسی با جاوا اسکریپت در انگولار

how to convert persian chars to english chars
how to convert persian chars to english chars


سلام رفقا

حتما دیدید که توی برخی از سایتها توی اون فیلدهایی که حتما به انگلیسی پر بشند نیازی به تغییر زبان کیبورد نیست! ینی حتی اگر زبان کیبورد کاربر فارسی هم باشه میتونید انگلیسی تایپ کنید.

من برای این کد توی اینترنت گشتم ولی چیزی پیدا نکردم اونایی هم که پیدا کردم بهینه نبودن و با ساختن یک ارایه از همه حروفها و replace کردنشون با حروف انگلیسی نوشته شده بودن که کلی خط میشد.

بنابراین تصمیم گرفتم خودم یکی بنویسم که حتی برای زبان های غیر فارسی هم جواب بده، که نتیجش شد کد زیر.

البته من این کد رو توی پروژه انگولاری شرکت پیاده کردم که میتونید با کمی تغییر توی هر پروژه جاوا اسکریپتی دیگه ازش استفاده کنید.

برای اینکار من تابع زیر رو به رویداد keyUp فیلد متنی مورد نظر متصل کردم

inputValue: string = '';
toEnglishChars(e:KeyboardEvent) {
let char = e.code.toString().split('Key');
if (char.length > 1 && !(e.code == 'KeyA' && e.ctrlKey == true)) {
if (char[1].toLowerCase() == e.key.toLowerCase()) { // اگر زبان کیبوردانگلیسی است
this.editForm.patchValue({
dbName: this.inputValue+e.key
});
} else { // اگر زبان کیبورد انگلیسی نیست
if (e.shiftKey) {
this.editForm.patchValue({
dbName: this.inputValue+char[1]
});
} else {
this.editForm.patchValue({
dbName: this.inputValue+char[1].toLowerCase()
});
}
}
}
// to Allow the shortcut select all in input text
if (e.code == 'KeyA' && e.ctrlKey == true) {
(<any>e.target).select();
} else {
this.dbNameValue = this.editForm.value.dbName? this.editForm.value.dbName: '';
} }

کد htm:

<input type=&quottext&quot class=&quotk-textbox&quot
(keyup)=&quottoEnglishChars($event)&quot
=&quotreturn /[a-z0-9]/i.test(event.key)&quot
formControlName=&quotdbName&quot
/>

فقط یک نکته اینجا هست که هنگام تایپ یک لحظه حرف فارسی نماید دادمیشه و بعد با حرف انگلیسی جایگزین میشه که برای حل این مشکل من در رویداد یک کد Regix گذاشتم.

کدجاوا اسکریپت
میخوام اینجا ناشناس باشم و بی دغدغه اشوب تو ذهنمو بریزم بیرون
شاید از این پست‌ها خوشتان بیاید