פורסם: 13/02/2009 - 00:46
נושא ההודעה:
|
אממ... יכול להיות ש לא עונה כמו שצריך אצלך? מה הפלט שלו?
בנוסף, ווידאת שלסקריפט יש הרשאות ריצה, נכון?
בגדול השורה הראשונה בסקריפט אמורה להגיד ל-shell שלך למי לתת להריץ אותו, ובמקום פייתון הוא מעביר אותו ל-sh (נראה לי). בטוח שהעתקת את השורה הראשונה כמו שהיא?
זה כל מה שאני יכול לחשוב עליו... כך-או-כך זה עניין של ה-shell, לא של הסקריפט עצמו. אבל זה גם לא נורא, רק כמה תווים יותר בהקלדה
_________________ קוד: | <erno> hm. I've lost a machine.. literally _lost_. it responds to ping, it works completely, I just can't figure out where in my apartment it is. |
|
|
חזרה לתוכן הדיון |
פורסם: 13/02/2009 - 02:49
נושא ההודעה:
|
אהלן, עוד עדכון.
מעכשו הסקריפט מזהה טקסט גם בערבית, ולא משתמש יותר בביטויים רוגלרים.
אם יש בעיות דווחו לי בבקשה, נראה לי אבל שזיהוי השפה טוב יותר ככה (זה פועל על התו הראשון במחרוזת).
קוד: | #!/usr/bin/env python
# -*- coding: utf-8 -
#
# Pytrans is a frontend to babylon
# Version 1.1
from urllib2 import urlopen
from urllib import urlencode
from sys import argv
base_url = "http://translation.babylon.com/post_post.php"
def strip(s):
intag = [False]
def chk(c):
if intag[0]:
intag[0] = (c != '>')
return False
elif c == '<':
intag[0] = True
return False
return True
return ''.join(c for c in s if chk(c))
def translate(term):
if term[0] == '\xd7':
params = urlencode(dict(lps=14, lpt=0, mytextarea1=term))
elif term[0] in ['\xd9','\xd8']:
params = urlencode(dict(lps=15, lpt=14, mytextarea1=term))
else:
params = urlencode(dict(lps=0, lpt=14, mytextarea1=term))
page = urlopen(base_url, params).read()
return strip(page).replace("\n", '').replace(" ", "\n").replace(" ", "")
if __name__ == "__main__":
if len(argv) == 1:
print "What do you want to translate?"
exit()
term = " ".join(argv[1:])
output = translate(term)
print term
print output |
_________________ קוד: | <erno> hm. I've lost a machine.. literally _lost_. it responds to ping, it works completely, I just can't figure out where in my apartment it is. |
|
|
חזרה לתוכן הדיון |
פורסם: 13/02/2009 - 04:18
נושא ההודעה:
|
עובד נהדר! איזה כיף!
עוד משאלות:
1. משום מה, כאשר מקבלים תרגום מערבית לעברית דרך libnotify, הן הכותרת הערבית והן ההגדרה העברית מיושרות לשמאל דווקא. הבעייה הזו לא קיימת בתרגום מאנגלית לעברית ולהיפך - שם תמיד העברית מיושרת לימין והאנגלית לשמאל, לא משנה מי בכותרת ומי בהגדרה. אולי צריך להכניס איזה תו בקרה לפני המחרוזת שמתקבלת מהמילון הערבי?
2. אפשר גם רוסית? מן הסתם גם לשפה זו יש מרווח תווים משלה. אני לא יודע, בעצם - יש לבבילון מילון רוסי?
3. יהיה נחמד לשלוט על שפת היעד הראשית של הסקריפט דרך פרמטר חיצוני. ככה אחמד מדמשק יוכל לכוון את הסקריפט לתרגם לו מאנגלית ומעברית לערבית, ומערבית לאנגלית, בלי לנבור בתוכו פנימה.
יש מצב?
(איזה מגניב זה קוד פתוח!)
נערך לאחרונה על-ידי חמוס_במשקפיים בתאריך 13/02/2009 - 17:19, סך-הכל נערך פעם אחת
|
|
חזרה לתוכן הדיון |
פורסם: 13/02/2009 - 15:01
נושא ההודעה:
|
סקריפט מדהים.
אני משתמש בסביבה של GNOME ומצאתי דרך לשלוף את הטקסט המסומן דרך הסקריפט, עם הקטע קוד הבא.
קוד: |
import gtk
clipboard = gtk.clipboard_get(selection = "PRIMARY")
term = clipboard.wait_for_text()
|
אלי
|
|
חזרה לתוכן הדיון |
פורסם: 14/02/2009 - 20:37
נושא ההודעה:
|
תודה...מה שקרה זה שהיה שורה רווח בתחילת הקוד
כנראה מקופי פסט שעשיתי מהאתר ,לא חשבתי שזה יכול לגרום לבעיות ,איזה ילד אני
השלב הבא זה לנסות למצוא פעולה יותר נוחה להפעלת הסקריפט ,חשבתי משו עם העכבר
שוב תודה ,באמת סקריפט מוצלח ,ועובד מהר בצורה די מפתיעה
|
|
חזרה לתוכן הדיון |
פורסם: 14/02/2009 - 20:49
נושא ההודעה:
|
yp : | תודה...מה שקרה זה שהיה שורה רווח בתחילת הקוד
כנראה מקופי פסט שעשיתי מהאתר ,לא חשבתי שזה יכול לגרום לבעיות ,איזה ילד אני
השלב הבא זה לנסות למצוא פעולה יותר נוחה להפעלת הסקריפט ,חשבתי משו עם העכבר
שוב תודה ,באמת סקריפט מוצלח ,ועובד מהר בצורה די מפתיעה |
אם אתה משתמש בקומפיז אין בעיה להגדיר הרצה בעזרת הזזת העכבר אל אחת מפינות המסך.
|
|
חזרה לתוכן הדיון |
פורסם: 14/02/2009 - 23:01
נושא ההודעה:
|
באמת אם כבר עוסקים בבאבילון, אולי כדאי כבר לפתח יישום פתוח לשימוש מלא בבאבילון? (נמאס לעבוד עם סטארדיקט)
|
|
חזרה לתוכן הדיון |
פורסם: 14/02/2009 - 23:04
נושא ההודעה:
|
חמוס_במשקפיים : | אוקיי - יש! האח הידד!
צריך להשתמש בגירסה 0.11 ומעלה של xclip כדי שהתרגום מעברית יעבוד, ואין צורך בשום פרמטר נוסף. אנשי פדורה החביבים העלו פאץ' שמומש, סוף סוף, באפסטרים. ניתן להוריד מכאן: http://sourceforge.net/projects/xclip ולהדר. צריך להתקין את חבילות הפיתוח של xorg.
באובונטו, למרבית הצער, גירסת xclip אינה עולה 0.8. אני אנסה לבקש יפה בפורומים שלהם לייבא את הגירסה החדשה לפחות לג'אונטי. |
אפשר בבקשה הסבר לאיך להתקין xclip 0.11 הורדתי והסתבכתי..
אחרי
אני לא מצליח לעשות לא make ולא make install
אני יודע שאני מפספס משהו..
תודה
|
|
חזרה לתוכן הדיון |
פורסם: 15/02/2009 - 03:46
נושא ההודעה:
|
iceman23 : | חמוס_במשקפיים : | אוקיי - יש! האח הידד!
צריך להשתמש בגירסה 0.11 ומעלה של xclip כדי שהתרגום מעברית יעבוד, ואין צורך בשום פרמטר נוסף. אנשי פדורה החביבים העלו פאץ' שמומש, סוף סוף, באפסטרים. ניתן להוריד מכאן: http://sourceforge.net/projects/xclip ולהדר. צריך להתקין את חבילות הפיתוח של xorg.
באובונטו, למרבית הצער, גירסת xclip אינה עולה 0.8. אני אנסה לבקש יפה בפורומים שלהם לייבא את הגירסה החדשה לפחות לג'אונטי. |
אפשר בבקשה הסבר לאיך להתקין xclip 0.11 הורדתי והסתבכתי..
אחרי
אני לא מצליח לעשות לא make ולא make install
אני יודע שאני מפספס משהו..
תודה |
צריך את הפלט של ./configure בכדי לעזור לך.
|
|
חזרה לתוכן הדיון |
פורסם: 15/02/2009 - 06:25
נושא ההודעה:
|
iceman23 : | חמוס_במשקפיים : | אוקיי - יש! האח הידד!
צריך להשתמש בגירסה 0.11 ומעלה של xclip כדי שהתרגום מעברית יעבוד, ואין צורך בשום פרמטר נוסף. אנשי פדורה החביבים העלו פאץ' שמומש, סוף סוף, באפסטרים. ניתן להוריד מכאן: http://sourceforge.net/projects/xclip ולהדר. צריך להתקין את חבילות הפיתוח של xorg.
באובונטו, למרבית הצער, גירסת xclip אינה עולה 0.8. אני אנסה לבקש יפה בפורומים שלהם לייבא את הגירסה החדשה לפחות לג'אונטי. |
אפשר בבקשה הסבר לאיך להתקין xclip 0.11 הורדתי והסתבכתי..
אחרי
אני לא מצליח לעשות לא make ולא make install
אני יודע שאני מפספס משהו..
תודה |
אייסמן, ככל הנראה חסרה לך החבילה xorg-dev. כמו כן וודא שמותקנת אצלך החבילה build-essentials.
|
|
חזרה לתוכן הדיון |
פורסם: 15/02/2009 - 11:57
נושא ההודעה:
|
חמוס_במשקפיים : |
אייסמן, ככל הנראה חסרה לך החבילה xorg-dev. כמו כן וודא שמותקנת אצלך החבילה build-essentials. |
זה מה שפיספסתי תודה.
|
|
חזרה לתוכן הדיון |
פורסם: 15/02/2009 - 21:45
נושא ההודעה:
|
ראיתי היום את
http://www.tirgumit.co.il/Translate.asp
ואני חושב שהוא די חדש. מישהו מרים את הכפפה להתממשקות אליו? מצטער, אבל פשוט אני ממש עסוק לאחרונה...
_________________ מערכת: GNU/Linux Ubuntu גרסה: 14.04
|
|
חזרה לתוכן הדיון |
פורסם: 16/02/2009 - 02:05
נושא ההודעה:
|
זה לא אמור להיות מסובך בכלל, אבל - למה? מה הוא מציע שאין בממשק של בבילון?
_________________ קוד: | <erno> hm. I've lost a machine.. literally _lost_. it responds to ping, it works completely, I just can't figure out where in my apartment it is. |
|
|
חזרה לתוכן הדיון |
פורסם: 17/02/2009 - 19:26
נושא ההודעה:
|
bjesus : | זה לא אמור להיות מסובך בכלל, אבל - למה? מה הוא מציע שאין בממשק של בבילון? |
יש בבילון ללינוקס?
|
|
חזרה לתוכן הדיון |
פורסם: 18/02/2009 - 00:47
נושא ההודעה:
|
Ddorda : | bjesus : | זה לא אמור להיות מסובך בכלל, אבל - למה? מה הוא מציע שאין בממשק של בבילון? | יש בבילון ללינוקס? |
עכשיו, בזכות הסקריפט הזה, יש.
|
|
חזרה לתוכן הדיון |
פורסם: 19/02/2009 - 20:42
נושא ההודעה:
|
bjesus : | זה לא אמור להיות מסובך בכלל, אבל - למה? מה הוא מציע שאין בממשק של בבילון? |
זה נקרא "אי תלות בספק יחיד"
_________________ מערכת: GNU/Linux Ubuntu גרסה: 14.04
|
|
חזרה לתוכן הדיון |
פורסם: 20/02/2009 - 23:45
נושא ההודעה:
|
אולי אפשר לבנות לזה GUI, כדי שנוכל להשתמש בזה כתוכנה לכל דבר?
ובכלל אני בעד שיהיה כבר תחליף הולם ל תוכנת באבילון בעולם הקוד הפתוח, ואם אלה יהיו ישראלים שיבנו את התוכנית - כבוד לנו
|
|
חזרה לתוכן הדיון |
פורסם: 02/03/2009 - 20:37
נושא ההודעה:
|
שלום bjesus,
שוב תודה רבה על הסקריפט. אני משתמש בו בעזרת שורת ההפעלה שניסחת:
xclip -o | xargs -I $ ~/Software/scripts/pytrans.py $ | xargs -0I 1 notify-send 1
באובונטו ג'אונטי יש בעיה: היא מיישמת מערכת הודעות חדשה. במערכת הזו, כותרת ההודעה מקוצצת כדי להתאים לגודל התיבה. גוף ההודעה (שנכתב בפונט קטן יותר) יכול להיות ארוך הרבה יותר. הפעולה המתבקשת היא להציב את המונח לתרגום בשדה הכותרת (Summary) ואת התרגום בשדה הגוף (Body). למרבית המזל, notify-send תומכת בזה מצוין: הארגומנט הראשון שלה מעביר טקסט לכותרת, והשני - לגוף. את הסקריפט שכתבת כמעט אין צורך לשנות: יש רק להסיר את print term לפני הסוף. עם זאת, עם שורת ההפעלה אני מסתבך. אני פשוט לא מתמצא מספיק בדקויות של פייפינג ואקס-ארגס. האם אוכל לבקש ממך לשנות את השורה הזו כך שתעביר לנוטיפיי-סנד את הפלט של xclip -o בתור ארגומנט ראשון ואת הפלט של pytrans.py (שקיבל גם הוא את xclip -o כקלט) בתור ארגומנט שני?
בתודה מראש,
יותם
|
|
חזרה לתוכן הדיון |
פורסם: 03/03/2009 - 10:51
נושא ההודעה:
|
נו בערך עוד אפשר לעבוד על זה:
קוד: |
import pygtk
pygtk.require('2.0')
import gtk, gobject
import urllib2
from urllib import urlencode
import re
base_url = "http://translation.babylon.com/post_post.php"
def strip(s):
intag = [False]
def chk(c):
if intag[0]:
intag[0] = (c != '>')
return False
elif c == '<':
intag[0] = True
return False
return True
return ''.join(c for c in s if chk(c))
class gtranslator:
def translate(self,term):
if term[0] == '\xd7':
params = urlencode(dict(lps=14, lpt=0, mytextarea1=term))
elif term[0] in ['\xd9','\xd8']:
params = urlencode(dict(lps=15, lpt=14, mytextarea1=term))
else:
params = urlencode(dict(lps=0, lpt=14, mytextarea1=term))
page = urllib2.urlopen(base_url, params).read()
return strip(page).replace("\n", '').replace(" ", "\n").replace(" ", "")
def fetch_clipboard_info(self):
self.clipboard.request_text(self.clipboard_text_received)
return True
def clipboard_text_received(self, clipboard, text, data):
if not text or text == '':
return
if self.term==text:
return
self.textentry.set_text (text)
t=self.translate (text)
self.textbuffer.set_text (t)
self.term=text
def enter_callback (self, widget, entry):
term=entry.get_text ()
if term=='':
return
t=self.translate (term)
self.textbuffer.set_text (t)
self.term=term
def __init__(self):
self.window = gtk.Window()
self.window.set_title("Babylon")
self.window.connect("destroy", lambda w: gtk.main_quit())
vbox = gtk.VBox()
vbox.show()
self.textentry = gtk.Entry()
self.textentry.connect("activate", self.enter_callback, self.textentry)
self.textentry.show()
vbox.pack_start(self.textentry)
scrolledwin = gtk.ScrolledWindow()
scrolledwin.show()
self.textview = gtk.TextView()
self.textview.show()
self.textview.set_size_request(275,150)
self.textview.set_wrap_mode(gtk.WRAP_CHAR)
self.textbuffer = self.textview.get_buffer()
scrolledwin.add(self.textview)
vbox.pack_start(scrolledwin)
self.window.add(vbox)
self.window.show()
self.clipboard = gtk.Clipboard(display=gtk.gdk.display_get_default(), selection="PRIMARY")
self.clipboard.request_text(self.clipboard_text_received)
self.term = ''
self.clipboard.wait_for_text()
def main():
gtrans = gtranslator ()
gtk.main()
return 0
if __name__ == '__main__':
main()
|
|
|
חזרה לתוכן הדיון |
פורסם: 03/03/2009 - 15:33
נושא ההודעה:
|
תודה רבה על העבודה!
הקוד החדש לא עובד לי. כשאני מריץ אותו מהטרמינל עם "test" כארגומנט אני מקבל:
קוד: |
/home/yotam/Software/scripts/pytrans.py: line 2: syntax error near unexpected token `'2.0''
/home/yotam/Software/scripts/pytrans.py: line 2: `pygtk.require('2.0')'
|
אני מניח שמדובר בתלות שאינני מבין.
מה השיפורים בקוד החדש? מהצצה של בור עושה רושם שהוא משתמש עכשיו בתיבות טקסט של gtk. זה דווקא מאוד בלתי-רצוי מבחינתי. השימוש בהודעות מערכת הוא הרבה יותר קליל ואלגנטי, גם בגלל הפורטביליות וגם משום שהודעות מערכת נסגרות בעצמן, לא גונבות פוקוס מחלונות אחרים וכן הלאה. מעבר לכך, אני רואה שהסקריפט החדש משתמש ב-clipboard של gtk. אם פירוש הדבר הוא שצריך עכשיו לגזור או להעתיק את הטקסט לפני תרגומו, הרי שגם זו נסיגה בשימושיות. עם xclip צריך רק לסמן את הטקסט.
בכל אופן, הבעיה שלי אינה נעוצה בסקריפט כי אם בשורת ההפעלה שלו (ר' מעלה), שאמורה לעשות אינטגרציה עם xclip ועם notify-send. אני צריך להשתמש בפלט של xclip -o פעמיים, פעם כארגומנט עבור הסקריפט עצמו ופעם כארגומנט ראשון עבור notify-send (כשאת הארגומנט השני מספק הסקריפט).
אולי אפשר יהיה להכין גירסה של הסקריפט שתשלב בתוכה את הקריאות ל-xclip (כדי לשאובאת המונח\ים לתרגום) ול-notify-send (כדי לשלוח את המונח ואת הגדרתו כפלטים), כך שלא יהיה צריך לתחזק שורות הפעלה מסובכות? מבחינתי זה יהיה בדיוק מה שאני צריך.
|
|
חזרה לתוכן הדיון |
פורסם: 03/03/2009 - 20:55
נושא ההודעה:
|
אחלה סקריפט (המקורי כמובן) עובד בלי בעחות באובונטו
|
|
חזרה לתוכן הדיון |
פורסם: 04/03/2009 - 01:07
נושא ההודעה:
|
יש התקדמות!
חבר'ה, אתם מכריחים אותי ללמוד פייתון!
הגירסה הנוכחית של הסקריפט שולחת את הפלט כהודעת מערכת דרך פייתון, כך שהיא לא זקוקה לחבילה libnotify-bin. המונח לתרגום מופיע ככותרת באותיות גדולות, והתרגום -בקטנות. עם זאת, יש צורך (במפתיע) בחבילה python-notify. זו גירסה די מלוכלכת (אין הפרדה בין הקריאה מבבילון ובין משלוח הודעת המערכת, וכמובן שאין מימוש של מחלקות - פעם ראשונה שאני נוגע בפייתון), אבל עובדת. אם מישהו רוצה לנקות, תבוא עליו הברכה.
מכיוון שאין כבר צורך בפקודה החיצונית notify-send, פקודת ההפעלה של הסקריפט פשוטה יותר:
קוד: | xclip -o | xargs -I $ ./pytrans.py $ |
והנה הסקריפט עצמו:
קוד: | #!/usr/bin/env python
# -*- coding: utf-8 -
#
# Pytrans is a frontend to babylon
# Version 1.2
# Change from 1.1: using pynotify to send a system notification instead of just printing the result. Requires pynotify
from urllib2 import urlopen
from urllib import urlencode
from sys import argv
import pynotify
base_url = "http://translation.babylon.com/post_post.php"
def strip(s):
intag = [False]
def chk(c):
if intag[0]:
intag[0] = (c != '>')
return False
elif c == '<':
intag[0] = True
return False
return True
return ''.join(c for c in s if chk(c))
def translate(term):
if term[0] == '\xd7':
params = urlencode(dict(lps=14, lpt=0, mytextarea1=term))
elif term[0] in ['\xd9','\xd8']:
params = urlencode(dict(lps=15, lpt=14, mytextarea1=term))
else:
params = urlencode(dict(lps=0, lpt=14, mytextarea1=term))
page = urlopen(base_url, params).read()
return strip(page).replace("\n", '').replace(" ", "\n").replace(" ", "")
if __name__ == "__main__":
if len(argv) == 1:
print "What do you want to translate?"
exit()
term = str(" ".join(argv[1:]))
translation = str(translate(term))
if not pynotify.init("Basics"):
sys.exit(1)
n = pynotify.Notification(term, '\n' + translation)
if not n.show():
print "Failed to send notification"
sys.exit(1)
|
לצערי, עוד לא הצלחתי לגשת לקליפבורד של x כדי לחלץ ממנו את הטקסט הנבחר דרך פייתון. אין טעם להריץ את הפקודה xclip או xsel מתוך הסקריפט בעזרת Popen או Pexpect, מפני שהיא רצה בקונטקסט פנימי ואין לה גישה ל-x שמסביבה. הדרך הנכונה לעשות זאת היא במסגרת הצימודים של פייתון ל-x, מה שנקרא python-xlib, אבל אני עדיין לא סגור על הדרך שבה עושים את זה. שוב, כל הצעה תקבל בברכה.
|
|
חזרה לתוכן הדיון |
פורסם: 04/03/2009 - 10:56
נושא ההודעה:
|
אשמח לקבל הסבר מה זה בדיוק הפקודה הבאה
xclip -o | xargs -I $ ./pytrans.py $
זה דוגמת הרצה בווינדוס ? או דוגמת הרצה דרך X ?
אם זה דרך X איך עושים את זה ?
אצלי אני מריץ דרך טרמינל BASH רושם PYTHON ואת שם הקובץ וארגומנט
עכשיו עם הודעת המערכת הוא גם סידר לי מימין לשמאל שלא מסודר בטרמינל
לא רע אפילו מGNUV
|
|
חזרה לתוכן הדיון |
פורסם: 04/03/2009 - 12:56
נושא ההודעה:
|
queency : | אשמח לקבל הסבר מה זה בדיוק הפקודה הבאה
xclip -o | xargs -I $ ./pytrans.py $
זה דוגמת הרצה בווינדוס ? או דוגמת הרצה דרך X ?
אם זה דרך X איך עושים את זה ?
אצלי אני מריץ דרך טרמינל BASH רושם PYTHON ואת שם הקובץ וארגומנט
עכשיו עם הודעת המערכת הוא גם סידר לי מימין לשמאל שלא מסודר בטרמינל
לא רע אפילו מGNUV |
הפקודה הזו עובדת רק עם x, והיא משתמשת בתוכנה xclip. אם אתה על אובונטו צריך להוריד ולהדר את xclip מסורספורג', כי הגרסה שבאה עם אובונטו ישנה ולא תומכת ביוניקוד.
הפקודה xclip -o נותנת את הטקסט המסומן כרגע, המצוי תמיד בזכרון המטמון של x. אותו מעבירים בעזרת pipe אל הסקריפט, והסקריפט מתרגם אותו ושולח את התוצאה כהודעת מערכת. אם אתה משתמש בשורת ההפעלה שציינתי למעלה אתה לא צריך להעביר ארגומנט לתרגום; הטקסט המסומן הוא הטקסט שיתורגם.
מאוד שימושי להגדיר את השורה הזו כפעולה של צירוף מקשים ברמת מטאסיטי או קומפיז. אני משתמש ב-ctrl+D.
|
|
חזרה לתוכן הדיון |
פורסם: 09/03/2009 - 04:10
נושא ההודעה: גירסה חדשה
|
במזל טוב, גירסה חדשה ל-pytrans.
שינויים מהגירסה הקודמת:
1. בוטלה התלות ב-xclip ובמקומה יש להתקין את xsel. היתרון הוא בכך ש-xsel תומכת ביוניקוד גם בגרסאותיה היציבות, ולא צריך לקמפל אותה באובונטו - מספיק להתקין מהמאגרים.
2. נוספה הודעת שגיאה למקרה ששום טקסט לא נבחר.
3. חשוב מכל: קריאת הטקסט הנבחר עבור הקלט מתבצעת כעת בתוך הסקריפט. פירוש הדבר שאין עוד צורך בקלט חיצוני: מספיק להריץ את הסקריפט, והוא יוציא הודעת מערכת גרפית נאה עם תרגום הטקסט הנבחר.
הוראות שימוש:
1. התקינו את החבילות xsel, python-notify
2. צרו קובץ בשם ~/.pytrans.py והעתיקו לתוכו את הסקריפט
3. הצמידו את הפקודה ~/.pytrans.py לצירוף מקשים (כגון Ctrl+d) בהגדרות מנהל החלונות שלכם (קומפיז, מטסיטי וכו')
4. ומכאן ניתן לסמן כל מילה בעברית, אנגלית וערבית ולתרגמה בהנפת מקש.
ושוב תודה ל-bjesus על העבודה החשובה!
קוד: | #!/usr/bin/env python
# -*- coding: utf-8 -
#
# Pytrans is a frontend to babylon
# Version 1.3
# Change from 1.1: using pynotify to send a system notification instead of just printing the result. Requires pynotify
# Change from 1.2: using xsel in-line so no need for complex activation line - just run the script. also added notification when no text is selected.
from urllib2 import urlopen
from urllib import urlencode
import pynotify
import subprocess
base_url = "http://translation.babylon.com/post_post.php"
def strip(s):
intag = [False]
def chk(c):
if intag[0]:
intag[0] = (c != '>')
return False
elif c == '<':
intag[0] = True
return False
return True
return ''.join(c for c in s if chk(c))
def translate(term):
if term[0] == '\xd7':
params = urlencode(dict(lps=14, lpt=0, mytextarea1=term))
elif term[0] in ['\xd9','\xd8']:
params = urlencode(dict(lps=15, lpt=14, mytextarea1=term))
else:
params = urlencode(dict(lps=0, lpt=14, mytextarea1=term))
page = urlopen(base_url, params).read()
return strip(page).replace("\n", '').replace(" ", "\n").replace(" ", "")
def get_x_selection():
"""Get X selection"""
proc = subprocess.Popen(['xsel', ], stdout=subprocess.PIPE)
x_selection = proc.stdout.read()
proc.stdout.close()
proc.wait()
return x_selection
if __name__ == "__main__":
if not pynotify.init("Basics"):
sys.exit(1)
term = str(get_x_selection())
if len(term) < 1:
n = pynotify.Notification('No text selected', '')
else:
translation = translate(term)
n = pynotify.Notification(term, '\n' + translation)
if not n.show():
print "Failed to send notification"
sys.exit(1) |
[/code]
|
|
חזרה לתוכן הדיון |
פורסם: 09/03/2009 - 12:37
נושא ההודעה:
|
תיקון לשגיאת הזחה:
קוד: |
#!/usr/bin/env python
# -*- coding: utf-8 -
#
# Pytrans is a frontend to babylon
# Version 1.3
# Change from 1.1: using pynotify to send a system notification instead of just printing the result. Requires pynotify
# Change from 1.2: using xsel in-line so no need for complex activation line - just run the script. also added notification when no text is selected.
from urllib2 import urlopen
from urllib import urlencode
import pynotify
import subprocess
base_url = "http://translation.babylon.com/post_post.php"
def strip(s):
intag = [False]
def chk(c):
if intag[0]:
intag[0] = (c != '>')
return False
elif c == '<':
intag[0] = True
return False
return True
return ''.join(c for c in s if chk(c))
def translate(term):
if term[0] == '\xd7':
params = urlencode(dict(lps=14, lpt=0, mytextarea1=term))
elif term[0] in ['\xd9','\xd8']:
params = urlencode(dict(lps=15, lpt=14, mytextarea1=term))
else:
params = urlencode(dict(lps=0, lpt=14, mytextarea1=term))
page = urlopen(base_url, params).read()
return strip(page).replace("\n", '').replace(" ", "\n").replace(" ", "")
def get_x_selection():
"""Get X selection"""
proc = subprocess.Popen(['xsel', ], stdout=subprocess.PIPE)
x_selection = proc.stdout.read()
proc.stdout.close()
proc.wait()
return x_selection
if __name__ == "__main__":
if not pynotify.init("Basics"):
sys.exit(1)
term = str(get_x_selection())
if len(term) < 1:
n = pynotify.Notification('No text selected', '')
else:
translation = translate(term)
n = pynotify.Notification(term, '\n' + translation)
if not n.show():
print "Failed to send notification"
sys.exit(1)
|
|
|
חזרה לתוכן הדיון |
פורסם: 20/03/2009 - 09:35
נושא ההודעה:
|
אפשר בבקשה הסבר לזה:
ציטוט: | . הצמידו את הפקודה ~/.pytrans.py לצירוף מקשים (כגון Ctrl+d) בהגדרות מנהל החלונות שלכם (קומפיז, מטסיטי וכו') |
איך עושים את זה באבונטו 8.10?
תודה
|
|
חזרה לתוכן הדיון |
פורסם: 20/03/2009 - 17:39
נושא ההודעה:
|
Anonymous : | אפשר בבקשה הסבר לזה:
ציטוט: | . הצמידו את הפקודה ~/.pytrans.py לצירוף מקשים (כגון Ctrl+d) בהגדרות מנהל החלונות שלכם (קומפיז, מטסיטי וכו') |
איך עושים את זה באבונטו 8.10?
תודה |
אם אתה משתמש בקומפיז (אפקטי תלת מימד):
1. התקן את החבילה compizconfig-setting-manager והפעל אותה דרך preferences.
2. לחץ על Commands (מימין למעלה). בשדה Command Line 0 הזן:
3. עבור ללשונית Key Binding. בשדה Run Command 0 לחץ על הכפתור disabled, שנה הגדרה ל-enabled, לחץ על Grab key combination ואז על ctrl+d.
4. צא, וזה אמור לעבוד.
אם אתה משתמש במטסיטי:
1. מתפריט preferences בחר keyboard shortcuts.
2. בחר Add. בשדה name הזן Babylon translation, או מה שבא לך. בשדה command הזן ולחץ על apply.
3. לחץ על הכיתוב disabled מימין לצירוף החדש ולחץ על ctrl+d.
4. צא, וזה אמור לעבוד.
|
|
חזרה לתוכן הדיון |
פורסם: 20/03/2009 - 20:22
נושא ההודעה:
|
תודה חמוס, אבל זהו שאין לי קומפיז, אני על גנום נקי
|
|
חזרה לתוכן הדיון |
פורסם: 20/03/2009 - 20:39
נושא ההודעה:
|
אם כך השתמש בהוראות למטסיטי (מנהל החלונות הילידי של גנום) שהובאו בחלקה השני של ההודעה.
נ.ב. אם זה לא עובד נסה להזין כפקודה:
|
|
חזרה לתוכן הדיון |
|