انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)  (دفعات بازدید: 2913 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین Emptyc

  • Full Member
  • *
  • ارسال: 215
  • جنسیت : پسر
ویرایش: کمی بهبودش دادم(کامل نیست ولی کار راه بندازه) ولی همچنان منتظر نسخه کامل PHPای که دوستمون توی پستای بعدی معرفی کردن هستم! اون اگه اوکی بشه میشه یه مترجم برخط سبک رو داشته باشیم!
توی گنوم برای ترجمه متن از افزونه‌ای به نام Text Translator میشه استفاده کرد ولی توی XFCE همچین قابلیتی وجود نداره بخاطر همین خواستم از این استکریپت برای ترجمه استفاده کنم اونم فقط برای ترجمه انگلیسی به فارسی نه بیشتر.
اسکریپت اصلی رو از این سایت گرفتم --> Translate Any Text You Select On Your Linux Desktop With A Keyboard Shortcut And Notifications

برای کارکردن با این اسکریپ:
پیش‌نیاز: باید بسته‌های xsel و translate shell و zenity نصب بشه!
برای نصب xsel و zenity دستور زیر رو وارد کنید:
sudo apt update && sudo apt install -y xsel zenity


اگه گیت نصب نیست اون رو نصب کنید والا نیازی به اجرای دستور زیر نیست:
sudo apt install gitبرای نصب translate shell باید از منبع گیت استفاده کنید و بعد از ساخت اون رو نصب کنید.
git clone https://github.com/soimort/translate-shell.git
cd "translate shell"
make
sudo make install
نکته: بعد از نصب translate shell چند بسته همراه اون نصب میشه بهتره برای اطلاع کامل به صفحه گیت‌هاب translate shell برید.

بعد از نصب پیش‌نیازها باید یه فایل ایجاد کنید و شروع به نوشتن اسکریپ کنید. مراحل زیر رو طی کنید.
۱- یک فایل به نام tr ایجاد کنید و دستورات زیر رو توی اون فایل قرار بدید.
#!/usr/bin/env bash

W=800
H=400

text="$(xsel -o)"
ft="$( trans -brief :fa "$(echo $text)" )"
echo -e $ft > /tmp/ft
translate="$( fribidi --wrtl --clean /tmp/ft )"
rm /tmp/ft
echo "<!DOCTYPE html>" > /tmp/tt.html
echo "<html "dir="rtl" lang="fa"">" >> /tmp/tt.html
echo "<head>" >> /tmp/tt.html
echo "  <meta charset="utf-8">" >> /tmp/tt.html
echo "  <title>ترجمه متن آنلاین</title>" >> /tmp/tt.html
echo "</head>" >> /tmp/tt.html
echo "<body>" >> /tmp/tt.html
echo "  <h5>" >> /tmp/tt.html
echo -e "Original text: $text" >> /tmp/tt.html
echo "  </h5>" >> /tmp/tt.html
echo "  <p>" >> /tmp/tt.html
echo -e "Translation:">> /tmp/tt.html
echo "  </p>" >> /tmp/tt.html
echo "  <p>" >> /tmp/tt.html
echo -e "$translate" >> /tmp/tt.html
echo "  </p>" >> /tmp/tt.html
echo '</body>' >> /tmp/tt.html
echo "</html>" >> /tmp/tt.html

zenity --text-info --html --filename=/tmp/tt.html --width=$W --height=$H

۲- فایل tr رو به یک فایل اجرای تبدیل کنید
chmod u+x tr۳- با استفاده از دستور زیر فایل رو به شاخه /usr/local/bin/ منتقل کنید.
mv ./tr /usr/local/bin/حالا میتونید با اجرای دستور tr این فایل رو اجرا کنید! اما کار نمیکنه فعلا چون باید متن انتخاب بشه و سپس این دستور اجرا بشه!
۴- از هر میزکاری که استفاده میکنید پنجره میانبر صفحه کلید رو باز کنید و یک میانبر بسازید مقادیر زیر رو وارد کنید.
مقدار Command رو بزارید tr
مقدار Name رو هرچی دوست دارید بزارید من گذاشتم "مترجم"
برای میانبر هم من از  Alt+r استفاده کردم شما هرچی دوست داشتید انتخاب کنید!
۵- یک متن غیر فارسی رو انتخاب کنید و کلیدمیانبر(Alt+r) خودتون رو از رو صفحه کلید بزنید.
۶- تمام یه پنجره براتون باز میشه و متن ترجمه شده توسط گوگل! براتون به نمایش درمیاد.

امیدوارم بدرد بخوره! توی Xfce خیلی به کارم اومد!‌! یه روزم قابلیت صوتش رو بررسی میکنم ببینم چطوره!
« آخرین ویرایش: 21 اسفند 1396، 07:28 ق‌ظ توسط Emptyc »
بُزُرْگي سَرآسَر بِهْ گُفتآرْ نيست ./. دُوصَد گُفْتِه چُو نیمْ کِرْدآرْ نیستْ.

آفلاین Silvio Dante

  • High Hero Member
  • *
  • ارسال: 1221
  • جنسیت : پسر
  • Arch Linux
    • وبلاگ شخصی
پاسخ : مشکل: اسکریپت مترجم متن
« پاسخ #1 : 16 بهمن 1396، 10:22 ق‌ظ »
چرا از goldendict استفاده نمی‌کنی؟!
ترمینال xfce متنای فارسی رو درست نمایش نمی‌ده اما فقط توی ترمینال درست نمایش نمیده و اگر یه متن فارسی رو توی یه فایل ذخیره کنی مشکلی نداره! که اینجا مشکل داری  :-k
به ما نگفته بودند ایران در زمان احمدشاه قاجار چگونه بوده است. همیشه به ما دادند، ما هم فکر کردیم باید می‌داده‌اند و تازه خیال می‌کردیم کم‌مان است باز هم می‌خواستیم!!
فریدون فرخزاد

آفلاین Emptyc

  • Full Member
  • *
  • ارسال: 215
  • جنسیت : پسر
چرا از goldendict استفاده نمی‌کنی؟!
از goldendict استفاده میکنم! ولی دلیل نمیشه از مترجم‌های بر‌خط دست بکشم.
ترمینال xfce متنای فارسی رو درست نمایش نمی‌ده اما فقط توی ترمینال درست نمایش نمیده و اگر یه متن فارسی رو توی یه فایل ذخیره کنی مشکلی نداره! که اینجا مشکل داری  :-k
کلا این که ترمینال متن رو چطور نشون میده مهم نیست من خروجی که میگیرم توی ترمینال نیست خودم حدس میزنم مشکل از انکودر باشه!
« آخرین ویرایش: 17 بهمن 1396، 12:26 ق‌ظ توسط Emptyc »
بُزُرْگي سَرآسَر بِهْ گُفتآرْ نيست ./. دُوصَد گُفْتِه چُو نیمْ کِرْدآرْ نیستْ.

آفلاین Emptyc

  • Full Member
  • *
  • ارسال: 215
  • جنسیت : پسر
درستش کردم مشکل از TranslateShell بود که خروجی پیشفرضش ASCII بود و من باید از یه بسته به نام FriBidi استفاده میکردم تا کاراکترهای فارسی رو به شکل فارسی دربیاره. این بسته توی صفحه گیت‌هاب TranslateShell معرفی شده اونجا میتونید پیداش کنید.
برای این کار از دستور زیر توی اسکریپت استفاده کردم.
fribidi --rtl --clean /path/of/your/file
« آخرین ویرایش: 17 بهمن 1396، 12:26 ق‌ظ توسط Emptyc »
بُزُرْگي سَرآسَر بِهْ گُفتآرْ نيست ./. دُوصَد گُفْتِه چُو نیمْ کِرْدآرْ نیستْ.

آفلاین geeksesi | javad

  • High Sr. Member
  • *
  • ارسال: 685
  • جنسیت : پسر
  • GeekSesi.xyz
    • محمد جواد قاسمی
من یه چیزی ساختم با php-cli از یاندکس برای ترجمه استفاده می کنه + تلفظ کلمه رو هم از گوگل دانلود و پخش می کنه‌!
https://github.com/geeksesi/PronunciationWord
متاسفانه هنوز وقت نکردم دستی به سر و روش بکشم و فقط برای استفاده شخصیه و اصلا نمی دونم که ممکنه توی سیستمت اجرا بشه یا نه D:
برای استفاده ازش کافیه یه alias تعریف کنی و اون رو به صورت شورت کد قرار بدی هر متنی رو که سلکت کنی و اون شوت کد رو بزنی ( حتی می تونی شورت کد هم نباشه و هر بار اسکریپت رو صدا کنی توی ترمینال !‌) تلفظ با mpv پخش و ترجمه اون کلمه هم توی بخش نوتیفیکیشن نمایش میده ( که مشکلی هم با فارسی نداره ! )
توی i3 خیلی راحت ازش استفاده می کردم ولی توی یونیتی ( اوبونتو 16.4) وقتی شورت کد تعیین می کنم برنامه اجرا نمیشه دلیلشم نمی دونم‌!
در مورد فایل تلفظ هم بگم که با wget از گوگل دانلود می کنه و توی یه پوشه ( که خودت باید بسازیش ) توی : ~/.trans قرار می ده و اگر یه بار تلفظی رو دانلود کنه برای دفعات بعد از اون پوشه تلفظ رو پخش می کنه !

یه مسئله دیگه اگه خواستی استفاده کنی توی متغیر $config مسیر دقیق اون پوشه ی .trans ( هر کجا که می خوای باشه ) رو مشخص کن ! به یه دلیلی نشد از ~ ( به معنی دایرکتوری home ) استفاده کنم ! 
اگر اشتباه کردم راهنمایی کنید تا تکرار نکنم.

آفلاین Emptyc

  • Full Member
  • *
  • ارسال: 215
  • جنسیت : پسر
من یه چیزی ساختم با php-cli از یاندکس برای ترجمه استفاده می کنه + تلفظ کلمه رو هم از گوگل دانلود و پخش می کنه‌!
https://github.com/geeksesi/PronunciationWord
متاسفانه هنوز وقت نکردم دستی به سر و روش بکشم و فقط برای استفاده شخصیه و اصلا نمی دونم که ممکنه توی سیستمت اجرا بشه یا نه D:
برای استفاده ازش کافیه یه alias تعریف کنی و اون رو به صورت شورت کد قرار بدی هر متنی رو که سلکت کنی و اون شوت کد رو بزنی ( حتی می تونی شورت کد هم نباشه و هر بار اسکریپت رو صدا کنی توی ترمینال !‌) تلفظ با mpv پخش و ترجمه اون کلمه هم توی بخش نوتیفیکیشن نمایش میده ( که مشکلی هم با فارسی نداره ! )
توی i3 خیلی راحت ازش استفاده می کردم ولی توی یونیتی ( اوبونتو 16.4) وقتی شورت کد تعیین می کنم برنامه اجرا نمیشه دلیلشم نمی دونم‌!
در مورد فایل تلفظ هم بگم که با wget از گوگل دانلود می کنه و توی یه پوشه ( که خودت باید بسازیش ) توی : ~/.trans قرار می ده و اگر یه بار تلفظی رو دانلود کنه برای دفعات بعد از اون پوشه تلفظ رو پخش می کنه !

یه مسئله دیگه اگه خواستی استفاده کنی توی متغیر $config مسیر دقیق اون پوشه ی .trans ( هر کجا که می خوای باشه ) رو مشخص کن ! به یه دلیلی نشد از ~ ( به معنی دایرکتوری home ) استفاده کنم !

ممنون همین الان Clone کردم تست میکنم مشکل داشتم همینجا مطرح میکنم
بُزُرْگي سَرآسَر بِهْ گُفتآرْ نيست ./. دُوصَد گُفْتِه چُو نیمْ کِرْدآرْ نیستْ.

آفلاین Emptyc

  • Full Member
  • *
  • ارسال: 215
  • جنسیت : پسر
من یه چیزی ساختم با php-cli از یاندکس برای ترجمه استفاده می کنه + تلفظ کلمه رو هم از گوگل دانلود و پخش می کنه‌!
https://github.com/geeksesi/PronunciationWord
اگه میشه بصورت کامل نحوه خروجی گرفتن رو توضیح بدید.
« آخرین ویرایش: 17 بهمن 1396، 01:45 ق‌ظ توسط Emptyc »
بُزُرْگي سَرآسَر بِهْ گُفتآرْ نيست ./. دُوصَد گُفْتِه چُو نیمْ کِرْدآرْ نیستْ.

آفلاین geeksesi | javad

  • High Sr. Member
  • *
  • ارسال: 685
  • جنسیت : پسر
  • GeekSesi.xyz
    • محمد جواد قاسمی
من یه چیزی ساختم با php-cli از یاندکس برای ترجمه استفاده می کنه + تلفظ کلمه رو هم از گوگل دانلود و پخش می کنه‌!
https://github.com/geeksesi/PronunciationWord
اگه میشه بصورت کامل نحوه خروجی گرفتن رو توضیح بدید.


منظور از نحوه ی خروجی گرفتن رو متوجه نشدم.
ولی پکیج های مورد نیاز :
php-cli php mpv
یه سری اشکالاتی وجود داره که نیاز پیدا می کنید به پکیج های اضافی صبر کن من یه دستی به کدا بکشم یه دایکیومنت جمع و جورم براش می نویسم الان !
اگر اشتباه کردم راهنمایی کنید تا تکرار نکنم.

آفلاین Emptyc

  • Full Member
  • *
  • ارسال: 215
  • جنسیت : پسر
منظور از نحوه ی خروجی گرفتن رو متوجه نشدم.
منظورم از خروجی ترجمه یه متن بود! مثلا یه متن بهش بدی اونو به زبان مورد نظر برگردونه!

ولی پکیج های مورد نیاز :
php-cli php mpv
آره بسته‌هاشو نصب کرده بودم فقط چون هیچ مستنداتی براش نداشتی من باید خودم کد رو میخوندم تا بتونم ازش استفاده کنم ولی حسش نبود  \\:D/

یه سری اشکالاتی وجود داره که نیاز پیدا می کنید به پکیج های اضافی صبر کن من یه دستی به کدا بکشم یه دایکیومنت جمع و جورم براش می نویسم الان !
منم منتظر همین بودم \\:D/ \\:D/ \\:D/ 8)
بُزُرْگي سَرآسَر بِهْ گُفتآرْ نيست ./. دُوصَد گُفْتِه چُو نیمْ کِرْدآرْ نیستْ.

آفلاین geeksesi | javad

  • High Sr. Member
  • *
  • ارسال: 685
  • جنسیت : پسر
  • GeekSesi.xyz
    • محمد جواد قاسمی
خب یه چیزایی نوشتم ( با انگلیسی دست و پا شکسته D:)
کلا هم 76 خط کد بیشتر نیست هرکس کدارو بخونه راحت تره تا مستندات منو D:
اگر اشتباه کردم راهنمایی کنید تا تکرار نکنم.

آفلاین Emptyc

  • Full Member
  • *
  • ارسال: 215
  • جنسیت : پسر
خب یه چیزایی نوشتم ( با انگلیسی دست و پا شکسته D:)
کلا هم 76 خط کد بیشتر نیست هرکس کدارو بخونه راحت تره تا مستندات منو D:
سلام بسیار عالی اما من یک سری مشکل داشتم
۱- نمیتونم جملات رو ترجمه کنم و فقط یک کلمه رو میتونه ترجمه کنه.
۲- بعضی وقتا نمیخوام خروجی صوتی داشته باشم ولی همیشه تلفظ رو انجام میده.
۳- بخاطر استفاده از zenity میخوام خروجی متن ترجمه شده رو در یک فایل مثلا در مسیر /tmp/myFile/ ذخیره کنه اگه میشه این آپشن‌ها رو بهش اضافه کنید.
بُزُرْگي سَرآسَر بِهْ گُفتآرْ نيست ./. دُوصَد گُفْتِه چُو نیمْ کِرْدآرْ نیستْ.

آفلاین geeksesi | javad

  • High Sr. Member
  • *
  • ارسال: 685
  • جنسیت : پسر
  • GeekSesi.xyz
    • محمد جواد قاسمی
سلام بسیار عالی اما من یک سری مشکل داشتم
۱- نمیتونم جملات رو ترجمه کنم و فقط یک کلمه رو میتونه ترجمه کنه.
۲- بعضی وقتا نمیخوام خروجی صوتی داشته باشم ولی همیشه تلفظ رو انجام میده.
۳- بخاطر استفاده از zenity میخوام خروجی متن ترجمه شده رو در یک فایل مثلا در مسیر /tmp/myFile/ ذخیره کنه اگه میشه این آپشن‌ها رو بهش اضافه کنید.

خوشحالم که به دردت خورده :)
۱- این ترجمه جمله فکر می کنم مشکل از یاندکس باشه ! چون خودم هیچ وقت باهاش جمله ترجمه نکردم فقط دنبال این بودم که تلفظ یه کلمه رو گوش بدم ( بعد ترجمه رو هم اضافه کردم )

۲- در مورد خروجی صوتی شاید بتونم یه اپشنی اضافه کنم که با یه سوییج بتونی دانلود صوت رو غیرفعال کنی !

۳- من متوجه نشدم که zenity چه استفاده ای داره !  فکر می کنم یه نوع خروجی باشه مثل همین نوتیفیکیشن سرویس که بشهه سری قابلیت هایی رو از شل توی محیط گرافیکی نشون داد !
اگه یکم توضیح بدی که برای چی استفاده می کنی شاید اصلا پیشفرض از این ابزار استفاده کنم :)
اگر اشتباه کردم راهنمایی کنید تا تکرار نکنم.

آفلاین Emptyc

  • Full Member
  • *
  • ارسال: 215
  • جنسیت : پسر
۳- من متوجه نشدم که zenity چه استفاده ای داره !  فکر می کنم یه نوع خروجی باشه مثل همین نوتیفیکیشن سرویس که بشهه سری قابلیت هایی رو از شل توی محیط گرافیکی نشون داد !
اگه یکم توضیح بدی که برای چی استفاده می کنی شاید اصلا پیشفرض از این ابزار استفاده کنم :)
zenity یک نرم‌افزار آزاد و متن بازه که به شما این توانایی رو میده که Dialog Boxهای GTK+ رو از طریق command-line و shell-script اجرا کنی. منم از این برنامه برای گرفتن خروجی متن استفاده میکنم خیلی برنامه جالبی‌‌ و کاملا با HTML5 سازگاره اگه ازش استفاده کنی میتونی خروجی متن ترجمه شده رو به جای Notification توی یک فرم GUI به نمایش دربیاره.
zenity github
zenity home-page
« آخرین ویرایش: 17 بهمن 1396، 08:16 ب‌ظ توسط Emptyc »
بُزُرْگي سَرآسَر بِهْ گُفتآرْ نيست ./. دُوصَد گُفْتِه چُو نیمْ کِرْدآرْ نیستْ.

آفلاین geeksesi | javad

  • High Sr. Member
  • *
  • ارسال: 685
  • جنسیت : پسر
  • GeekSesi.xyz
    • محمد جواد قاسمی
۳- من متوجه نشدم که zenity چه استفاده ای داره !  فکر می کنم یه نوع خروجی باشه مثل همین نوتیفیکیشن سرویس که بشهه سری قابلیت هایی رو از شل توی محیط گرافیکی نشون داد !
اگه یکم توضیح بدی که برای چی استفاده می کنی شاید اصلا پیشفرض از این ابزار استفاده کنم :)
zenity یک نرم‌افزار آزاد و متن بازه که به شما این توانایی رو میده که Dialog Boxهای GTK+ رو از طریق command-line و shell-script اجرا کنی. منم از این برنامه برای گرفتن خروجی متن استفاده میکنم خیلی برنامه جالبی‌‌ و کاملا با HTML5 سازگاره اگه ازش استفاده کنی میتونی خروجی متن ترجمه شده رو به جای Notification توی یک فرم GUI به نمایش دربیاره.
zenity github
zenity home-page
عالیه سعی می کنم ازش استفاده کنم :)
خیلی ممنون
اگر اشتباه کردم راهنمایی کنید تا تکرار نکنم.

آفلاین Emptyc

  • Full Member
  • *
  • ارسال: 215
  • جنسیت : پسر
عالیه سعی می کنم ازش استفاده کنم :)
خیلی ممنون
چی شد هیچ خبری ندادی!؟ اگه میتونی یه تایپیک برای این اسکریپت باز کن فکر میکنم بشه با zenity و اسکریپت شما یه مترجم کاربردی ساخت.
بُزُرْگي سَرآسَر بِهْ گُفتآرْ نيست ./. دُوصَد گُفْتِه چُو نیمْ کِرْدآرْ نیستْ.