Posted on 2009-06-03 21:00
陳坤 閱讀(7411)
評論(5) 編輯 收藏 引用 所屬分類:
Flashing Ideas
JustType新命令translate~ 實(shí)時(shí)翻譯! 廢話不多說,截2個(gè)圖先:(http://justtype.cloudapp.net 我前一篇博文有更詳細(xì)地介紹這個(gè)JustType項(xiàng)目)
我們經(jīng)常會(huì)有這種需求,就是翻譯一小段看不太懂的外語。Google提供了翻譯服務(wù),但是如果每次都要打開Google那個(gè)翻譯頁面,倒也挺麻煩。于是我把翻譯功能也做成了JustType的命令,現(xiàn)在在JustType中就可以通過translate命令來翻譯任何語言的文字了。想體驗(yàn)的話:http://justtype.cloudapp.net
整個(gè)translate命令的腳本代碼很簡單,先用正則表達(dá)式分析了命令結(jié)構(gòu),然后向網(wǎng)頁寫入javascript代碼,在javascript中引用google函數(shù)庫,調(diào)用對應(yīng)函數(shù)即可:
import System
import System.Text
import System.Text.RegularExpressions
import System.Web
from System.Text.RegularExpressions import *
def OnCommand(command):
sourceLang = "en"
targetLang = "zh"
text = command
chkAdvancedUsage = Regex("(?<text>(.|\n)+?)\\s+from (?<from>[a-zA-Z]+) to (?<to>[a-zA-Z]+)")
m = chkAdvancedUsage.Match(command)
if m.Success:
sourceLang = m.Groups["from"].Value
targetLang = m.Groups["to"].Value
text = m.Groups["text"].Value
render = "<div id=\"divTranslation\" style=\"background-color:#f0f8ff; border:dotted 1px gray; padding:5px; width:500px; \"></div>\n"
render += "<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n"
render += "<script type=\"text/javascript\">\n"
render += "google.load(\"language\", \"1\");\n"
render += "function initializeTranslation() { google.language.translate(\"" + System.Web.HttpUtility.HtmlEncode(text.Replace("\n", " ").Replace("\r", "")) + "\",\"" + sourceLang + "\", \"" + targetLang + "\", function(result) {\n"
render += "if (!result.error) { document.getElementById(\"divTranslation\").innerHTML = result.translation; } else { document.getElementById(\"divTranslation\").innerHTML = \"error!\" }\n"
render += "}); }"
render += "google.setOnLoadCallback(initializeTranslation);"
render += "</script>"
SetTipText(render)
return True
在JustType中,一個(gè)命令對應(yīng)一個(gè)執(zhí)行腳本,我們可以自己寫新腳本,同時(shí)可以允許其他人調(diào)用自己寫的程序。大家互相分享自己智慧的同時(shí),也在利用編程技術(shù)增加自己和他人的工作效率。更多的信息請到http://justtype.cloudapp.net 獲取。 :)