|
|
|
|
פורסם: 29/01/2009 - 16:56
נושא ההודעה: Babylon ב-Awesome, ובכלל
|
אהלן,
כתבתי סקריפט פייתון קצרצר שמתממשק לבבילון ומביא את התרגום. אני משתמש בו עם xclip ב-Awesome ככה שאחרי סימון מילה כלשהי, Ctrl+D מדפיס באמצעות Naughty את התרגום.
בגדול, אבל, אפשר להשתמש בו בכל מקום. הסקריפט מקבל מילה באנגלית ומוציא את הערך שלה בעברית.
יש קצת בעיה עם הקידוד, לכן חובה להשתמש ב-iconv להמרה אחרי השימוש בתוכנה.
להלן הקוד:
קוד: | import sys, urllib2
from BeautifulSoup import BeautifulSoup
term = sys.argv[1]
url = 'http://info.babylon.com/cgi-bin/info.cgi?s=educaterra&lang=14&word='+term
code = BeautifulSoup(urllib2.urlopen(url).read())
print code.div.prettify().replace('<div align="right" dir="rtl">\n<font color="BLUE">\n ', '').replace('\n', '').replace('</font>', ' ').replace('<br /><br /></div>', '').replace('<hr /><font color="BLUE"> ', '\n') |
אני יודע, זה לא הכי נקי, אבל זה עובד וגם עובד מהר.
כאמור, מריצים כך:
קוד: | bjesus@tilon ~/projects/pytrans % ./pytrans.py hello | iconv -f utf8 -t windows-1252 -c | iconv -f iso88598 -t utf8
(מ"ק) הלו, היי (ברכת שלום, ברכה בזמן פגישה); הלו! (קריאה למשוך תשומת-לב)
(ש"ע) ברכת שלום, שלום, הלו |
|
|
חזרה לתוכן הדיון |
פורסם: 29/01/2009 - 17:50
נושא ההודעה:
|
מזה Awesome xclip Naughty ?
ואיך זה קשור?
|
|
חזרה לתוכן הדיון |
פורסם: 29/01/2009 - 19:23
נושא ההודעה:
|
Awesome זה מנהל חלונות - חפש בגוגל את Awesome Window Manager
xclip הוא כלי קטן שעוזר לנהל את ה-clipboard של X - ובעזרת 'xclip -o' אתה יכול לראות את המילה האחרונה שבחרת בעכבר
Naughty היא ספריה ב-Awesome שאחראית על Notifications. אתה יכול למצוא מידע עליה ב-Wiki של Awesome.
כמו שאמרתי, בסופו של דבר הסקריפט בסה"כ מקבל מילה ומביא את התרגום שלה. אתה יכול להשתמש בו איך שאתה רוצה. אני בחרתי להשתמש ב-xclip כדי למצוא איזו מילה מסומנת עכשו, וב-Naughty כדי להעביר את המידע למנהל החלונות שלי - Awesome. וזה גם מה שאתה רואה בתמונה.
|
|
חזרה לתוכן הדיון |
פורסם: 30/01/2009 - 08:46
נושא ההודעה:
|
ורק רציתי להוסיף - אם מישהו יכול להצליח לשחזר את מה שעושה iconv ישירות בפייתון, אני אודה לו מאוד אני מודה שזה נראה קצת צ'יקמוק ככה
_________________ קוד: | <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. |
|
|
חזרה לתוכן הדיון |
פורסם: 30/01/2009 - 09:32
נושא ההודעה:
|
יש מודול של iconv בפייתון, למה אתה לא משתמש בו?
משה
|
|
חזרה לתוכן הדיון |
פורסם: 30/01/2009 - 11:28
נושא ההודעה:
|
בגדול כי אני מעדיף לממש את זה פשוט בעזרת str.decode ו-str.encode, אבל לא מצליח בזה.
בנוסף, לא רציתי לחייב את המשתמש להתקין את המודול, שאצלי למשל לא מותקן כברירת מחדל במערכת, ואילו iconv כן (אני חושב שזה המצב אצל רוב האנשים). חשבתי שלשחרר את הקוד ככה יהפוך אותו לשמיש אצל יותר אנשים יותר ביתר קלות (לא ש-easy_install זה סיפור, אבל בכל זאת).
יש בעיה תאורטית לממש את ע"י שימוש ב-decode ו-encode של הסטרינג? נראה לי הרבה יותר נכון לעשות את זה ככה, אבל זה לא הולך.
_________________ קוד: | <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. |
|
|
חזרה לתוכן הדיון |
פורסם: 30/01/2009 - 12:08
נושא ההודעה:
|
הצלחתי. כעת אין צורך ב-iconv (לא התוכנה ולא המודול).
קוד: | #!/usr/bin/env python
# Pytrans is a frontend to babylon
# 0.2
import sys, urllib2, codecs
from BeautifulSoup import BeautifulSoup
term = sys.argv[1]
url = 'http://info.babylon.com/cgi-bin/info.cgi?s=educaterra&lang=14&word='+term
code = BeautifulSoup(urllib2.urlopen(url).read())
result = code.div.prettify().replace('<div align="right" dir="rtl">\n<font color="BLUE">\n ', '').replace('\n', '').replace('</font>', ' ').replace('<br /><br /></div>', '').replace('<hr /><font color="BLUE"> ', '\n').decode('utf8').encode('windows-1252').decode('iso8859-8').encode('utf8')
print result |
_________________ קוד: | <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. |
|
|
חזרה לתוכן הדיון |
פורסם: 30/01/2009 - 12:23
נושא ההודעה:
|
היי, מעכשיו אפשר לחפש כמה מילים יחד, ואם אין תרגום הוא אפילו יגיד
קוד: | #!/usr/bin/env python
# Pytrans is a frontend to babylon
# 0.5
import sys, urllib2
from BeautifulSoup import BeautifulSoup
babylon='http://info.babylon.com/cgi-bin/info.cgi?s=educaterra&lang=14&word='
def translate(term):
url=babylon+term
code=BeautifulSoup(urllib2.urlopen(url).read())
try:
result = code.div.prettify().replace(
'<div align="right" dir="rtl">\n<font color="BLUE">\n ', '').replace(
'\n', '').replace('</font>', ' ').replace('<br /><br /></div>', ''
).replace('<hr /><font color="BLUE"> ', '\n').decode('utf8').encode(
'windows-1252').decode('iso8859-8').encode('utf8')
except:
result = "no translation found"
return result
result = ""
for term in sys.argv[1:]:
result = result + term + "\n"
result = result + translate(term) + "\n"
print result |
כאמור, אין כבר צורך ב-iconv. לא כמודול ולא בתוכנה עצמה.
_________________ קוד: | <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. |
|
|
חזרה לתוכן הדיון |
פורסם: 05/02/2009 - 01:48
נושא ההודעה:
|
אמממ... רק בגלל שאין התלהבות, חשבתי לציין שגם מי שלא משתמש ב-Awesome יכול להשתמש בזה בפשטות.
אם יש לכם את הפקודה notify-send (שאצלי ב-Arch מגיעה יחד עם libnotify), למשל, אתם יכולים להריץ את זה פשוט ככה:
קוד: | ./pytrans.py hello world | xargs -0I 1 notify-send 1 |
ולקבל את התרגום, כמו בתמונה הבאה:
בגדול זה יכול להשתלב בכלל סביבת עבודה, ואם תשתמשו ב-xclip ותתנו לזה קיצור במקלדת - אתם מסודרים בהצלחה
_________________ קוד: | <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. |
|
|
חזרה לתוכן הדיון |
פורסם: 06/02/2009 - 02:00
נושא ההודעה:
|
זה נשמע לי נהדר, ואני מתלהב מאוד. אני זקוק לדבר כזה בדיוק.
רק מה, בתור בור קצת קשה לי להשתמש בתיאור הגולמי של מה שכתבת. אני לא יודע מה עושה Awsome, מה עושה xclip ואיך מחברים אותם עם הסקריפט שלך. האם תוכל בבקשה לכתוב Howto שיפרט איך להתקין את הסקריפט ולהשתמש בו, כולל התקנת תלויות ועד לרמת קיצור-הדרך במקלדת, בסביבת גנום?
|
|
חזרה לתוכן הדיון |
פורסם: 06/02/2009 - 03:53
נושא ההודעה: גם אני מצטרף לזה שמעליי
|
אין לי שום מושג במה שקשור לפייתון
מה אני עושה עם זה איך אני מפעיל את הסקריפט? יש ממשק גרפי לדבר? אני על KDE אז איך אני נותן לזה קיצור? או לייתר דיוק המערכת מכירה בזה כתוכנה כדי לתת לזה קיצור?
סליחה על כל השאלות זה אולי הולך להיות הסקריפט הראשון שאני ישים
|
|
חזרה לתוכן הדיון |
פורסם: 06/02/2009 - 09:12
נושא ההודעה:
|
לא רוצה לקלקל את השמחה אבל יש את stardict ואפשר לשים לו מילון בבילון בעברית. בנוסף המילון מורד למחשב ולא צריך לגשת לאינטרנט בשביל לחפש את המילה (עובד באמת כמו בבילון).
יש ממשק גרפי נחמד וקיצורי מקלדת.
אסף ש.
|
|
חזרה לתוכן הדיון |
פורסם: 06/02/2009 - 13:21
נושא ההודעה:
|
שינויים קוסמטיים בלבד:
קוד: |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from urllib2 import urlopen
from sys import argv
from BeautifulSoup import BeautifulSoup
en_base_url = "http://info.babylon.com/cgi-bin/info.cgi?s=educaterra&lang=14&word='"
def translate(term):
search_url = "%s%s" % (en_base_url, term)
page = BeautifulSoup(urlopen(search_url).read())
try:
result = page.div.prettify().replace('<div align="right" dir="rtl">\n<font color="BLUE">\n ', '')
result = result.replace('\n', '')
result = result.replace('</font>', ' ')
result = result.replace('<br /><br /></div>', '')
result = result.replace('<hr /><font color="BLUE"> ', '\n')
result = result.decode('utf8').encode('windows-1252').decode('iso8859-8').encode('utf8')
return result
except:
return None
if __name__ == "__main__":
for term in argv[1:]:
output = translate(term)
if output:
print "%s:\n%s" % (term, output)
else:
print "No translation found for the term %s" % term
|
|
|
חזרה לתוכן הדיון |
פורסם: 06/02/2009 - 15:46
נושא ההודעה: מכיר את סטארדיקט
|
אני מכיר את סטארדיקט, ומסיבות שונות אני מוצא אותו מאוד לא נוח. התגובה שלו איטית מאוד, למרות שמאגר הנתונים שלו מקומי, והוא מקפיץ חלון שלם שצריך לסגור.
שוב, אני מתחנן: אנא הבו לנו מדריך מפורט ליישום הסקריפט המגניב הזה!
|
|
חזרה לתוכן הדיון |
פורסם: 06/02/2009 - 16:26
נושא ההודעה:
|
מצטער על האוף-טופיק, אבל יש לך טעם מצויין במוזיקה
|
|
חזרה לתוכן הדיון |
פורסם: 06/02/2009 - 18:37
נושא ההודעה:
|
היי אורח, תודה, אני מניח שגם לך
בקשר ל-Stardict - אני מכיר את התוכנה, אף כי לא ניסיתי אותה מעולם. בגדול אני מעדיף מאוד להשתמש בסקריפט בעיקר מסיבת משאבים - אני לא אוהב שיש לי ברקע תוכנות שבאותו זמן לא עושות כלום. Stardict היא תוכנת QT שאני מניח שצורכת לא מעט משאבים, בטח שביחס לעובדה שהסקריפט לא צורך משאבים בכלל - הוא נדלק רק כשקוראים לו, ושום פרוסס לא יושב ומחכה. העניין עם האינטרנט הוא נכון, אבל מצאתי שזו לא צרה גדולה כשרובנו מחוברים היום בחיבור מהיר כל הזמן.
אני ממש צפוף בזמנים, אז אין לי כרגע זמן לכתוב (ולוודא) מדריך מפורט לגנום או KDE, אבל אני אגיד שוב בקצרה שאחרי התקנת xclip ו-libnotify (שאני חושב שמגיעה עם רוב ההפצות המודרניות) - זה בסה"כ עניין של הגדרת קיצור במקלדת עבור השורה הבאה:
קוד: | xclip -o | xargs -I $ ./pytrans.py $ | xargs -0I 1 notify-send 1 |
כאמור xclip -o מביא את המילה(המילים) המסומנת, pytrans.py זה הנתיב לסקריפט שמביא את התרגום, ו-notify-send שולח את התרגום אל libnotify, כמו בסקריפט האחרון.
כשיהיה לי קצת יותר זמן אני אכתוב הוראות מפורטות יותר.
והרבה תודה לאורח על "השינויים הקוסמטיים"
נ.ב.
באשר לשאלה "האם המערכת מכירה בזה כתוכנה?" - אם משהו עושה לך בעיות, נסה לקרוא לקוד עם python קודם. למשל - python thenameofmyscript.py.
_________________ קוד: | <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. |
|
|
חזרה לתוכן הדיון |
פורסם: 06/02/2009 - 18:56
נושא ההודעה:
|
תודה רבה - זה עובד נפלא!
כל הכבוד לכל העושים במלאכה.
|
|
חזרה לתוכן הדיון |
פורסם: 07/02/2009 - 02:22
נושא ההודעה:
|
והנה מגיעות הבקשות.
הסקריפט כבר התחיל לעזור לי. שני דברים קטנים שהייתי רוצה:
1. ניקוי התגיות לא מושלם עדיין. כשמבקשים את ההגדרה למחרוזת faq, למשל, מקבלים כמה תגיות html-יות.
2. הודעות השגיאה לא מושלמות עדיין. כאשר מחפשים מילה אנגלית לא מוכרת מקבלים הודעת שגיאה, אבל כאשר מחפשים צירוף לא מוכר או מילה עברית לא מקבלים כלום. הייתי רוצה לקבל משוב כל פעם שאני מפעיל את הסקריפט. אגב, הייתי שמח גם לקבל שגיאה מיוחדת אם אין שום טקסט ב-x selection, אבל זו כבר באמת התקטננות.
|
|
חזרה לתוכן הדיון |
פורסם: 07/02/2009 - 03:58
נושא ההודעה:
|
חמוס במשקפיים : | והנה מגיעות הבקשות.
הסקריפט כבר התחיל לעזור לי. שני דברים קטנים שהייתי רוצה:
1. ניקוי התגיות לא מושלם עדיין. כשמבקשים את ההגדרה למחרוזת faq, למשל, מקבלים כמה תגיות html-יות.
2. הודעות השגיאה לא מושלמות עדיין. כאשר מחפשים מילה אנגלית לא מוכרת מקבלים הודעת שגיאה, אבל כאשר מחפשים צירוף לא מוכר או מילה עברית לא מקבלים כלום. הייתי רוצה לקבל משוב כל פעם שאני מפעיל את הסקריפט. אגב, הייתי שמח גם לקבל שגיאה מיוחדת אם אין שום טקסט ב-x selection, אבל זו כבר באמת התקטננות. |
אני האורח שביצע את השינויים הקוסמטיים, השעה מאוחרת אבל עם מחר אני אזכור אני אכתוב סקריפט שמתבסס על הרעיון הפשוט פה עם התקנה פשוטה בתור חבילת deb. ואולי נברר גם על מימוש עם מילונים מקומים שאין לי ניסיון איתם אבל עדיין לא הבנתי למה הם כל כך מורכבים.
|
|
חזרה לתוכן הדיון |
פורסם: 07/02/2009 - 15:31
נושא ההודעה:
|
אחלה, וכל הכבוד!
אם אתה בונה חבילה, חשוב לזכור:
1. גרסאות ל-32 ו-64 ביט.
2. דאגה לתלויות: python, beautiful-soup, libnotify-bin, xclip.
3. הוספה של קיצור-דרך מקלדתי כברירת מחדל במטסיטי, קומפיז, קיי-די-אי.
חזון לגרסה הבאה: ממשק משתמש שיאפשר להגדיר את צירוף המקשים להפעלה ואת המילונים השונים, באונליין ובאוף-ליין, שבהם ייעשה הסקריפט שימוש.
חזון לגרסה שאחרי הבאה: הסקריפט יבין לבד אם הטקסט עברי, ואז יציג תרגום אנגלי, או עברי, ואז יציג תרגום אנגלי.
|
|
חזרה לתוכן הדיון |
פורסם: 08/02/2009 - 03:24
נושא ההודעה:
|
ניקוי קטן של המחרוזת הסופית:
קוד: | #!/usr/bin/env python
# -*- coding: utf-8 -*-
from urllib2 import urlopen
from sys import argv
from BeautifulSoup import BeautifulSoup
en_base_url = "http://info.babylon.com/cgi-bin/info.cgi?s=educaterra&lang=14&word='"
def translate(term):
search_url = "%s%s" % (en_base_url, term)
page = BeautifulSoup(urlopen(search_url).read())
try:
result = page.div.prettify().replace('\n<font color="BLUE">\n ', '')
result = result.replace('\n', '')
result = result.replace('</font>', ' ')
result = result.replace('<br /><br /></div>', '')
result = result.replace('<div align="right" dir="rtl">', '')
result = result.replace('<hr /><font color="BLUE"> ', '\n')
result = result.decode('utf8').encode('windows-1252').decode('iso8859-8').encode('utf8')
return result
except:
return None
if __name__ == "__main__":
for term in argv[1:]:
output = translate(term)
if output:
print "%s:\n%s" % (term, output)
else:
print "No translation found for the term %s" % term |
עם הגירסה הזאת, אין תגיות html שמשתרבבות להגדרות המופקות מר"ת באנגלית כמו faq או hp.
|
|
חזרה לתוכן הדיון |
פורסם: 08/02/2009 - 07:40
נושא ההודעה:
|
מה עם גרסה שמשתמשת בויקימילון
בתור מילון עברית-עברית?
|
|
חזרה לתוכן הדיון |
פורסם: 09/02/2009 - 17:59
נושא ההודעה:
|
היי, ממש מגניב שאנשים עושים שיפוצים בקוד. תודה
אני שולח עוד תיקון לגירסה האחרונה של חמוס במשקפיים, שמשום מה נותנת ל<hr /> לעבור.
קוד: |
#!/usr/bin/env python
# -*- coding: utf-8 -
#
# Pytrans is a frontend to babylon
# 0.8
from urllib2 import urlopen
from sys import argv
from BeautifulSoup import BeautifulSoup
en_base_url = "http://info.babylon.com/cgi-bin/info.cgi?s=educaterra&lang=14&word='"
def translate(term):
search_url = "%s%s" % (en_base_url, term)
page = BeautifulSoup(urlopen(search_url).read())
try:
result = page.div.prettify().replace('\n<font color="BLUE">\n ', '')
result = result.replace('\n', '')
result = result.replace('</font>', ' ')
result = result.replace('<br /><br /></div>', '')
result = result.replace('<div align="right" dir="rtl">', '')
result = result.replace('<hr />', '\n')
result = result.decode('utf8').encode('windows-1252').decode('iso8859-8').encode('utf8')
return result
except:
return None
if __name__ == "__main__":
for term in argv[1:]:
output = translate(term)
if output:
print "%s:\n%s" % (term, output)
else:
print "No translation found for the term %s" % term
if len(argv) == 1:
print "What do you want to translate?"
|
זה אמור לפתור את זה.
לגבי כל הבקשות:
- העניין המילונים המקומיים נראה לי מסובך. העפתי מבט קצר בקבצי מילון של בבילון, וזה נראה לי מורכב מדי להשקיע בזה. בסופו של דבר זה גם בטח לא חוקי להפיץ את קבצי המילון (בטח שלא אם נעשה בהם שינויים), אז אני לא בטוח שיש בזה טעם, מה גם שהשרת של בבילון עונה מהר.
- חמוס_במשקפיים תיקן את רוב (כל?) בעיות התגיות שהתפלחו לתרגום. תודה.
- הסקריפט נותן עכשו תשובה תמיד (?), גם אם הוא לא מקבל שום בקשה לתרגום.
- לגבי ממשק משתמש - אין לדעתי טעם לשלב כזה בסקריפט. שוב, אם מישהו רוצה ליצור deb שמגדיר את המקשים, מה טוב. בהנחה ש notify-send עובד גם ב-KDE וגם בגנום, זה גם לא צריך להיות מורכב מדי.
- תרגום עברי-אנגלי / אנגלי-עברי לפי ההקשר - לא צריך להיות מסובך בכלל. אני חושב שאת התרגום אפשר להשיג באותו אופן מהאתר של בבילון, ואז נשאלת רק השאלה של איך מאתרים את השפה? יש למישהו רעיון? אולי איזה ביטוי רגולרי?
- ויקימילון נראה לי עדיין קצת חסר, לא? כמו שאני זוכר יש לבבילון מילון עברי-עברי, אני לא בטוח אם יש לו ממשק אינטרנטי. צריך לבדוק.
שוב תודה לכל מי שתרם/תורם וגם לכל מי שמשתמש
_________________ קוד: | <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. |
|
|
חזרה לתוכן הדיון |
פורסם: 09/02/2009 - 20:09
נושא ההודעה:
|
אכן, שמתי לב שה-hr התפלק... הקדמת אותי בתיקון.
לגבי תרגום עברי-אנגלי, הזיהוי באמת צריך להיות פשוט. לא מתעסקים כאן עם טקסטים מעורבים אז בסך הכל צריך ביטוי רגולרי שיבדוק אם יש אחת מבין האותיות אבגדהכלמנסעוזחטיפצקרשת. לצערי אינני מתכנת כך שאיני יודע ליישם את זה כאן.
האם אתה יודע מהו קוד השפה של בבילון לתרגום עברי-אנגלי? אם כן, אז היישום המלא קרוב מאוד!
|
|
חזרה לתוכן הדיון |
פורסם: 10/02/2009 - 00:46
נושא ההודעה:
|
היי, יש עכשו תמיכה בתרגום עברי-אנגלי, ואפילו זיהוי של השפה
מצאתי ממשק נוח יותר למאגר של בבילון, בכתובת הזו: http://translation.babylon.com/post_post.php
הוא מקבל POST עם lps כקוד של שפת המקור, lpt כשפת היעד, ו-mytextarea1 כמילה לתרגום. יש להם שם תמיכה בהמון, המון שפות. זה נחמד, ואם מישהו מבין קצת בביטוים רגולרים הוא יכול בקלות להוסיף גם תמיכה בערבית, צרפתית, וכו'.
בכל אופן הקוד קצת מבולגן, אבל אני סומך על המתקנים הקוסמטיים כאן תהנו:
קוד: | #!/usr/bin/env python
# -*- coding: utf-8 -
#
# Pytrans is a frontend to babylon
# Version 0.9
from urllib2 import urlopen
from urllib import urlencode
from sys import argv
from re import compile
from BeautifulSoup import BeautifulSoup
base_url = "http://translation.babylon.com/post_post.php"
english = compile("[A-z]")
def translate(term):
if english.search(term):
params = urlencode(dict(lps=0, lpt=14, mytextarea1=term))
else:
params = urlencode(dict(lps=14, lpt=0, mytextarea1=term))
page = BeautifulSoup(urlopen(base_url, params).read())
try:
result = ""
for div in page.findAll("div", {"class": "definition"}):
try:
result = result + div.span.span.renderContents().replace("\n","")
except:
result = result + div.span.renderContents().replace("\n","")
try:
result = result + div.span.nextSibling.renderContents().replace("\n","")
except:
result = result + div.span.nextSibling.replace("\n","")
result = result + "\n"
result = result.replace(" ","")
return result
except:
return None
if __name__ == "__main__":
for term in argv[1:]:
output = translate(term)
if output:
print term
print output
else:
print "No translation found for the term '%s'" % term
if len(argv) == 1:
print "What do you want to translate?" |
_________________ קוד: | <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. |
|
|
חזרה לתוכן הדיון |
פורסם: 10/02/2009 - 05:51
נושא ההודעה:
|
נראה מגניב, אבל לא מצליח לתרגם לי עברית. כשאני מבקש ממנו, למשל, לתרגם את המילה "יש", אני מקבל:
קוד: | No translation found for the term 'u05d9u05e9' |
מבדיקה שערכתי, מסתבר שהבעיה היא עם xclip שהופך, לפחות באובונטו אינטרפיד, טקסט עברי גאה ב-utf8 לטקסט לועזי מקודד ב-ISO-8859-1. יש דיווח של הבעיה ופאץ', שכביכול כבר נכנס לאפסטרים, בקישור הבא:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=380392
אבל בתיעוד הודעות השחרור של חבילת xclip באובונטו לא מצויין שום פאץ' כזה, והאפשרות המתוארת בקישור להריץ עם הפרמטר -utf8 לא עובדת אצלי.
האם אצלך התרגום מעברית לאנגלית עובד? אם כן יכול להיות שזה תלוי בגירסת ה-x. באיזו הפצה אתה משתמש? בכל אופן זה מסבך את העניינים - אפשר בקלות לזהות את המספרים בקלט ולהניח כתוצאה מכך שהמחרוזת היא עברית, אבל אני לא יודע אם ואיך אפשר לקודד אותה בחזרה ל-utf8 לפני המשלוח לבבילון.
|
|
חזרה לתוכן הדיון |
פורסם: 10/02/2009 - 15:38
נושא ההודעה:
|
אוקיי - יש! האח הידד!
צריך להשתמש בגירסה 0.11 ומעלה של xclip כדי שהתרגום מעברית יעבוד, ואין צורך בשום פרמטר נוסף. אנשי פדורה החביבים העלו פאץ' שמומש, סוף סוף, באפסטרים. ניתן להוריד מכאן: http://sourceforge.net/projects/xclip ולהדר. צריך להתקין את חבילות הפיתוח של xorg.
באובונטו, למרבית הצער, גירסת xclip אינה עולה 0.8. אני אנסה לבקש יפה בפורומים שלהם לייבא את הגירסה החדשה לפחות לג'אונטי.
|
|
חזרה לתוכן הדיון |
פורסם: 10/02/2009 - 19:32
נושא ההודעה:
|
הי חמוס, אני שמח לשמוע שזה מסתדר בשבילך.
חשבתי - אולי אפשר להוסיף איזה דגל לסקריפט - '--ubuntu' למשל, שידע לקבל את הסטרינג בקידוד הדפוק? סה"כ זה לא צריך להיות מסובך מדי להמיר אותו, לא?
אין לי איזה מחשב אובנטו באזור אז אין לי איך לבדוק, אבל אם יש לך אולי תוכל לעשות איזה ניסוי בהמרת הקידוד (אם תמצא איך, אני אוכל להוסיף את הדגל).
תודה וערב טוב.
_________________ קוד: | <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. |
|
|
חזרה לתוכן הדיון |
פורסם: 12/02/2009 - 11:47
נושא ההודעה:
|
עוד עדכון!
מעכשו הסקריפט לא מחפש בנפרד כל ערך שאתם מעבירים לו, אלא במידה ויש כמה מילים הוא מחפש אותם יחד - כמשפט או כביטוי. נראה לי יעיל יותר.
בנוסף נפרדנו מהתלות מ-BeautifulSoup, עכשו הכל פייתון טהור.
כאמור, הסקריפט מזהה עם הערך שלכם הוא עברי או אנגלי ומתרגם בהתאם.
קוד: | #!/usr/bin/env python
# -*- coding: utf-8 -
#
# Pytrans is a frontend to babylon
# Version 1.0
from urllib2 import urlopen
from urllib import urlencode
from sys import argv
from re import compile, sub
base_url = "http://translation.babylon.com/post_post.php"
english = compile("[A-z]")
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 english.search(term):
params = urlencode(dict(lps=0, lpt=14, mytextarea1=term))
else:
params = urlencode(dict(lps=14, lpt=0, 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. |
|
|
חזרה לתוכן הדיון |
פורסם: 12/02/2009 - 20:32
נושא ההודעה:
|
נחמד ,עוד כמה כמוך ואנחנו מסודרים!
מעניין שאצלי צריך
קוד: |
xclip -o | xargs -I $ python pytrans.py $ | xargs -0I 1 notify-send 1
|
כאילו ./pytrans.py עושה בעיות מעניין למה??? (רק באובנוטו עדיין לא נסיתי בשאר ההפצות אצלי)
קוד: |
yy@yy-desktop:~$ xclip -o | xargs -I $ ./pytrans.py $ | xargs -0I 1 notify-send 1
from: can't read /var/mail/urllib2
from: can't read /var/mail/urllib
from: can't read /var/mail/sys
from: can't read /var/mail/re
./pytrans.py: line 12: base_url: command not found
./pytrans.py: line 13: syntax error near unexpected token `('
./pytrans.py: line 13: `english = compile("[A-z]")'
|
|
|
חזרה לתוכן הדיון |
|
|
|
|