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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: Emptyc در 16 بهمن 1396، 09:54 ق‌ظ

عنوان: اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: Emptyc در 16 بهمن 1396، 09:54 ق‌ظ
ویرایش: کمی بهبودش دادم(کامل نیست ولی کار راه بندازه) ولی همچنان منتظر نسخه کامل PHPای که دوستمون توی پستای بعدی معرفی کردن هستم! اون اگه اوکی بشه میشه یه مترجم برخط سبک رو داشته باشیم!
توی گنوم برای ترجمه متن از افزونه‌ای به نام Text Translator میشه استفاده کرد ولی توی XFCE همچین قابلیتی وجود نداره بخاطر همین خواستم از این استکریپت برای ترجمه استفاده کنم اونم فقط برای ترجمه انگلیسی به فارسی نه بیشتر.
اسکریپت اصلی رو از این سایت گرفتم --> Translate Any Text You Select On Your Linux Desktop With A Keyboard Shortcut And Notifications (http://www.webupd8.org/2016/03/translate-any-text-you-select-on-your.html)

برای کارکردن با این اسکریپ:
پیش‌نیاز: باید بسته‌های xsel و translate shell (https://github.com/soimort/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 (https://github.com/soimort/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 خیلی به کارم اومد!‌! یه روزم قابلیت صوتش رو بررسی میکنم ببینم چطوره!
عنوان: پاسخ : مشکل: اسکریپت مترجم متن
ارسال شده توسط: Silvio Dante در 16 بهمن 1396، 10:22 ق‌ظ
چرا از goldendict استفاده نمی‌کنی؟!
ترمینال xfce متنای فارسی رو درست نمایش نمی‌ده اما فقط توی ترمینال درست نمایش نمیده و اگر یه متن فارسی رو توی یه فایل ذخیره کنی مشکلی نداره! که اینجا مشکل داری  :-k
عنوان: اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: Emptyc در 16 بهمن 1396، 10:34 ق‌ظ
چرا از goldendict استفاده نمی‌کنی؟!
از goldendict استفاده میکنم! ولی دلیل نمیشه از مترجم‌های بر‌خط دست بکشم.
ترمینال xfce متنای فارسی رو درست نمایش نمی‌ده اما فقط توی ترمینال درست نمایش نمیده و اگر یه متن فارسی رو توی یه فایل ذخیره کنی مشکلی نداره! که اینجا مشکل داری  :-k
کلا این که ترمینال متن رو چطور نشون میده مهم نیست من خروجی که میگیرم توی ترمینال نیست خودم حدس میزنم مشکل از انکودر باشه!
عنوان: اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: Emptyc در 17 بهمن 1396، 12:17 ق‌ظ
درستش کردم مشکل از TranslateShell بود که خروجی پیشفرضش ASCII بود و من باید از یه بسته به نام FriBidi استفاده میکردم تا کاراکترهای فارسی رو به شکل فارسی دربیاره. این بسته توی صفحه گیت‌هاب TranslateShell معرفی شده اونجا میتونید پیداش کنید.
برای این کار از دستور زیر توی اسکریپت استفاده کردم.
fribidi --rtl --clean /path/of/your/file
عنوان: پاسخ : اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: geeksesi | javad در 17 بهمن 1396، 12:43 ق‌ظ
من یه چیزی ساختم با php-cli از یاندکس برای ترجمه استفاده می کنه + تلفظ کلمه رو هم از گوگل دانلود و پخش می کنه‌!
https://github.com/geeksesi/PronunciationWord
متاسفانه هنوز وقت نکردم دستی به سر و روش بکشم و فقط برای استفاده شخصیه و اصلا نمی دونم که ممکنه توی سیستمت اجرا بشه یا نه D:
برای استفاده ازش کافیه یه alias تعریف کنی و اون رو به صورت شورت کد قرار بدی هر متنی رو که سلکت کنی و اون شوت کد رو بزنی ( حتی می تونی شورت کد هم نباشه و هر بار اسکریپت رو صدا کنی توی ترمینال !‌) تلفظ با mpv پخش و ترجمه اون کلمه هم توی بخش نوتیفیکیشن نمایش میده ( که مشکلی هم با فارسی نداره ! )
توی i3 خیلی راحت ازش استفاده می کردم ولی توی یونیتی ( اوبونتو 16.4) وقتی شورت کد تعیین می کنم برنامه اجرا نمیشه دلیلشم نمی دونم‌!
در مورد فایل تلفظ هم بگم که با wget از گوگل دانلود می کنه و توی یه پوشه ( که خودت باید بسازیش ) توی : ~/.trans قرار می ده و اگر یه بار تلفظی رو دانلود کنه برای دفعات بعد از اون پوشه تلفظ رو پخش می کنه !

یه مسئله دیگه اگه خواستی استفاده کنی توی متغیر $config مسیر دقیق اون پوشه ی .trans ( هر کجا که می خوای باشه ) رو مشخص کن ! به یه دلیلی نشد از ~ ( به معنی دایرکتوری home ) استفاده کنم ! 
عنوان: پاسخ : اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: Emptyc در 17 بهمن 1396، 01:01 ق‌ظ
من یه چیزی ساختم با php-cli از یاندکس برای ترجمه استفاده می کنه + تلفظ کلمه رو هم از گوگل دانلود و پخش می کنه‌!
https://github.com/geeksesi/PronunciationWord
متاسفانه هنوز وقت نکردم دستی به سر و روش بکشم و فقط برای استفاده شخصیه و اصلا نمی دونم که ممکنه توی سیستمت اجرا بشه یا نه D:
برای استفاده ازش کافیه یه alias تعریف کنی و اون رو به صورت شورت کد قرار بدی هر متنی رو که سلکت کنی و اون شوت کد رو بزنی ( حتی می تونی شورت کد هم نباشه و هر بار اسکریپت رو صدا کنی توی ترمینال !‌) تلفظ با mpv پخش و ترجمه اون کلمه هم توی بخش نوتیفیکیشن نمایش میده ( که مشکلی هم با فارسی نداره ! )
توی i3 خیلی راحت ازش استفاده می کردم ولی توی یونیتی ( اوبونتو 16.4) وقتی شورت کد تعیین می کنم برنامه اجرا نمیشه دلیلشم نمی دونم‌!
در مورد فایل تلفظ هم بگم که با wget از گوگل دانلود می کنه و توی یه پوشه ( که خودت باید بسازیش ) توی : ~/.trans قرار می ده و اگر یه بار تلفظی رو دانلود کنه برای دفعات بعد از اون پوشه تلفظ رو پخش می کنه !

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

ممنون همین الان Clone کردم تست میکنم مشکل داشتم همینجا مطرح میکنم
عنوان: پاسخ : اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: Emptyc در 17 بهمن 1396، 01:32 ق‌ظ
من یه چیزی ساختم با php-cli از یاندکس برای ترجمه استفاده می کنه + تلفظ کلمه رو هم از گوگل دانلود و پخش می کنه‌!
https://github.com/geeksesi/PronunciationWord
اگه میشه بصورت کامل نحوه خروجی گرفتن رو توضیح بدید.
عنوان: پاسخ : اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: geeksesi | javad در 17 بهمن 1396، 03:51 ق‌ظ
من یه چیزی ساختم با php-cli از یاندکس برای ترجمه استفاده می کنه + تلفظ کلمه رو هم از گوگل دانلود و پخش می کنه‌!
https://github.com/geeksesi/PronunciationWord
اگه میشه بصورت کامل نحوه خروجی گرفتن رو توضیح بدید.


منظور از نحوه ی خروجی گرفتن رو متوجه نشدم.
ولی پکیج های مورد نیاز :
php-cli php mpv
یه سری اشکالاتی وجود داره که نیاز پیدا می کنید به پکیج های اضافی صبر کن من یه دستی به کدا بکشم یه دایکیومنت جمع و جورم براش می نویسم الان !
عنوان: پاسخ : اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: Emptyc در 17 بهمن 1396، 08:05 ق‌ظ
منظور از نحوه ی خروجی گرفتن رو متوجه نشدم.
منظورم از خروجی ترجمه یه متن بود! مثلا یه متن بهش بدی اونو به زبان مورد نظر برگردونه!

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

یه سری اشکالاتی وجود داره که نیاز پیدا می کنید به پکیج های اضافی صبر کن من یه دستی به کدا بکشم یه دایکیومنت جمع و جورم براش می نویسم الان !
منم منتظر همین بودم \\:D/ \\:D/ \\:D/ 8)
عنوان: پاسخ : اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: geeksesi | javad در 17 بهمن 1396، 02:49 ب‌ظ
خب یه چیزایی نوشتم ( با انگلیسی دست و پا شکسته D:)
کلا هم 76 خط کد بیشتر نیست هرکس کدارو بخونه راحت تره تا مستندات منو D:
عنوان: پاسخ : اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: Emptyc در 17 بهمن 1396، 04:21 ب‌ظ
خب یه چیزایی نوشتم ( با انگلیسی دست و پا شکسته D:)
کلا هم 76 خط کد بیشتر نیست هرکس کدارو بخونه راحت تره تا مستندات منو D:
سلام بسیار عالی اما من یک سری مشکل داشتم
۱- نمیتونم جملات رو ترجمه کنم و فقط یک کلمه رو میتونه ترجمه کنه.
۲- بعضی وقتا نمیخوام خروجی صوتی داشته باشم ولی همیشه تلفظ رو انجام میده.
۳- بخاطر استفاده از zenity میخوام خروجی متن ترجمه شده رو در یک فایل مثلا در مسیر /tmp/myFile/ ذخیره کنه اگه میشه این آپشن‌ها رو بهش اضافه کنید.
عنوان: پاسخ : اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: geeksesi | javad در 17 بهمن 1396، 05:17 ب‌ظ
سلام بسیار عالی اما من یک سری مشکل داشتم
۱- نمیتونم جملات رو ترجمه کنم و فقط یک کلمه رو میتونه ترجمه کنه.
۲- بعضی وقتا نمیخوام خروجی صوتی داشته باشم ولی همیشه تلفظ رو انجام میده.
۳- بخاطر استفاده از zenity میخوام خروجی متن ترجمه شده رو در یک فایل مثلا در مسیر /tmp/myFile/ ذخیره کنه اگه میشه این آپشن‌ها رو بهش اضافه کنید.

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

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

۳- من متوجه نشدم که zenity چه استفاده ای داره !  فکر می کنم یه نوع خروجی باشه مثل همین نوتیفیکیشن سرویس که بشهه سری قابلیت هایی رو از شل توی محیط گرافیکی نشون داد !
اگه یکم توضیح بدی که برای چی استفاده می کنی شاید اصلا پیشفرض از این ابزار استفاده کنم :)
عنوان: پاسخ : اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: Emptyc در 17 بهمن 1396، 08:12 ب‌ظ
۳- من متوجه نشدم که zenity چه استفاده ای داره !  فکر می کنم یه نوع خروجی باشه مثل همین نوتیفیکیشن سرویس که بشهه سری قابلیت هایی رو از شل توی محیط گرافیکی نشون داد !
اگه یکم توضیح بدی که برای چی استفاده می کنی شاید اصلا پیشفرض از این ابزار استفاده کنم :)
zenity یک نرم‌افزار آزاد و متن بازه که به شما این توانایی رو میده که Dialog Boxهای GTK+ رو از طریق command-line و shell-script اجرا کنی. منم از این برنامه برای گرفتن خروجی متن استفاده میکنم خیلی برنامه جالبی‌‌ و کاملا با HTML5 سازگاره اگه ازش استفاده کنی میتونی خروجی متن ترجمه شده رو به جای Notification توی یک فرم GUI به نمایش دربیاره.
zenity github (https://github.com/GNOME/zenity)
zenity home-page (https://wiki.gnome.org/action/show/Projects/Zenity?action=show&redirect=Zenity)
عنوان: پاسخ : اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: geeksesi | javad در 18 بهمن 1396، 12:41 ق‌ظ
۳- من متوجه نشدم که zenity چه استفاده ای داره !  فکر می کنم یه نوع خروجی باشه مثل همین نوتیفیکیشن سرویس که بشهه سری قابلیت هایی رو از شل توی محیط گرافیکی نشون داد !
اگه یکم توضیح بدی که برای چی استفاده می کنی شاید اصلا پیشفرض از این ابزار استفاده کنم :)
zenity یک نرم‌افزار آزاد و متن بازه که به شما این توانایی رو میده که Dialog Boxهای GTK+ رو از طریق command-line و shell-script اجرا کنی. منم از این برنامه برای گرفتن خروجی متن استفاده میکنم خیلی برنامه جالبی‌‌ و کاملا با HTML5 سازگاره اگه ازش استفاده کنی میتونی خروجی متن ترجمه شده رو به جای Notification توی یک فرم GUI به نمایش دربیاره.
zenity github (https://github.com/GNOME/zenity)
zenity home-page (https://wiki.gnome.org/action/show/Projects/Zenity?action=show&redirect=Zenity)
عالیه سعی می کنم ازش استفاده کنم :)
خیلی ممنون
عنوان: پاسخ : اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: Emptyc در 21 بهمن 1396، 08:49 ب‌ظ
عالیه سعی می کنم ازش استفاده کنم :)
خیلی ممنون
چی شد هیچ خبری ندادی!؟ اگه میتونی یه تایپیک برای این اسکریپت باز کن فکر میکنم بشه با zenity و اسکریپت شما یه مترجم کاربردی ساخت.
عنوان: پاسخ : اسکریپت GUI مترجم متن آنلاین انگلیسی به فارسی(حل شد)
ارسال شده توسط: geeksesi | javad در 23 بهمن 1396، 08:30 ب‌ظ
هنوز وقت نکردم روش کار کنم
یه کاری دارم انجامش بدم بعد یه برنامه هایی براش دارم‌ :)