تبدیل کاراکترهای تایپ شده از فارسی به انگلیسی و بالعکس

امین 15 سپتامبر 2023 زمان خواندن: 3 دقیقه

توجه: این مطلب قدیمی است و صرفا جهت آرشیو حفظ شده است. ممکن است امروزه برخی موارد یکسان نباشند.

در نسخه آرشیو شده وبلاگ نوشته بودم که دنبال یک اسکریپتی میگردم که اگر کیبورد فارسی بود و ما میخواستیم انگلیسی بنویسیم و مثلا بجای google.com نوشتیم لخخلمث.زخ این اسکریپت کمک کنه با یک روش ساده عبارت رو تبدیل کنه، و بالعکس...

یکی از خواننده های وبلاگ اومد و گفت چند سال پیش کسی یه چیز مشابهی نوشته بود، لینکش رو در کامنت ها گذاشت و منم پیداش کردم و باهاش تماس گرفتم و ایده ام رو مطرح کردم. آقای فرود. یا f0rud

تا اینکه دیروز بود که ایشون به ایمیلم پاسخ داد و اسکریپتی رو برام فرستاده بود که دقیقا همین کار رو میکنه.

این خیلی عالیه!

برای اینکه کاراکترهای فارسی ای که اشتباهی تایپ کردید به انگلیسی تبدیل کنید، و بالعکس، اسکریپت هایی که در ادامه مطلب هستند یک جا ذخیره کنید و سپس یک شورتکات کیبرد به هر کدوم از اونها اختصاص بدید.

من برای اینکه راحت باشم، Ctrl + Shift + E رو برای تبدیل به انگلیسی و Ctrl + Shift + P رو برای تبدیل به فارسی در نظر گرفتم.

حالا هر جایی که اشتباهی تایپ کرده باشم مثلا مهدعطرشپشد.هق با select کردن عبارت و فشردن کلید Ctrl + Shift + E پس از یک ثانیه عبارت خودش تبدیل میشه به معادل انگلیسیش یعنی linuxvaman.ir و من لازم نیست پاکش کنم و از اول بنویسمش.

راستی، باید xdotool ، xsel ، xclip در سیستم نصب باشند. و رابط گرافیکی دسکتاپ هم xorg باشه. در wayland عمل نمیکنه.

ممنون فرود، ممنون yakh، و ممنون جامعه ی دوست داشتنی متن باز.

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

#!/bin/bash
# A simple convertor for change the text from selection and replace all persian charachter with English charachter in clipboard.
# Just assign it to a key binding, with anything you like (i3 for example).
# I wrote this for http://linuxvaman.ir/
# Publishe under WTFPL
# fzerorubigd <fzero@rubi.gd> 2 Dec 2015
change_string() {
  persian=( ض ْ ص ٌ ث ٍ ق ً ف ُ غ ِ ع َ ه ّ خ \] ح \[ ج چ ش ؤ س ئ ی ي ب إ ل أ ا آ ت ة ن \» م \« ک \: گ \؛ ظ ك ط ٓ ز ژ ر ٰ ذ ‌ د ٔ پ ء و \> \. \< ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۰ ! ٬ ٫ ﷼ ٪ × ، ؛ )
  english=( q Q w W e E r R t T y Y u U i I o O p P \[ \] a A s S d D f F g G h H j J k K l L \; \: \' \" z Z x X c C v V b B n N m M \, \> \. \< 1 2 3 4 5 6 7 8 9 0 ! @ \# \$ % \^ \& \' )
  len=$(echo ${#persian[*]})
  arg=$@
  for ((i=1 ; i < $len ; i++)) do
      arg=${arg//${english[$i]}/${persian[$i]}}
  done
  echo "$arg"
}
change_string $(xsel)|xclip -selection c
#sleep here is for the key binding. it is so fast, and normally, faster than you.
# so, when this line is run, you are stil pressing the key binding. just
# give it a rest until you move your lazy finger :)
sleep 1
xdotool type "$(change_string $(xsel))"

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

#!/bin/bash
# A simple convertor for change the text from selection and replace all persian charachter with English charachter in clipboard.
# Just assign it to a key binding, with anything you like (i3 for example).
# I wrote this for http://linuxvaman.ir/
# Publishe under WTFPL
# fzerorubigd <fzero@rubi.gd> 2 Dec 2015
change_string() {
  persian=( ض ْ ص ٌ ث ٍ ق ً ف ُ غ ِ ع َ ه ّ خ \] ح \[ ج چ ش ؤ س ئ ی ي ب إ ل أ ا آ ت ة ن \» م \« ک \: گ \؛ ظ ك ط ٓ ز ژ ر ٰ ذ ‌ د ٔ پ ء و \> \. \< ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۰ ! ٬ ٫ ﷼ ٪ × ، ؛ )
  english=( q Q w W e E r R t T y Y u U i I o O p P \[ \] a A s S d D f F g G h H j J k K l L \; \: \' \" z Z x X c C v V b B n N m M \, \> \. \< 1 2 3 4 5 6 7 8 9 0 ! @ \# \$ % \^ \& \' )
  len=$(echo ${#english[*]})
  arg=$@
  for ((i=1 ; i < $len ; i++)) do
      arg=${arg//${persian[$i]}/${english[$i]}}
  done
  echo "$arg"
}
change_string $(xsel)|xclip -selection c
#sleep here is for the key binding. it is so fast, and normally, faster than you.
# so, when this line is run, you are stil pressing the key binding. just
# give it a rest until you move your lazy finger :)
sleep 1
xdotool type "$(change_string $(xsel))"

اولین نفری باشید که دیدگاهی ارسال می کند!




حاصل سر و کله زدن های من با لینوکس