ruby TK版本的google翻译机
2023-03-14 10:15:33 时间
过去写的那个调用google翻译的翻译脚本,一直在用。那个版本只能处理单个单词,如果要翻译一行或者一段语句,尽管稍微修改下就可以,但失去了我想要的便利性。今天看了看TK,顺手写了个GUI版本的,采用一次请求一个线程,倒是便捷不少。在windows上,你需要到这里下载安装ActiveTcl才可以运行。
代码如下:
代码如下:
require 'net/http'
require 'tk'
require 'logger'
#设置代理
$proxy_addr='x.x.x.x'
$proxy_port='80'
class GoogleTranslate
def initialize(url)
@log = Logger.new("translate.log")
@log.level = Logger::WARN
@url=url
ph={'padx'=>50,'pady'=>10}
root=TkRoot.new{ title 'google 翻译程序'}
top=TkFrame.new(root) {background "white"}
#checkbutton,用于选择翻译类别
checked=TkVariable.new
TkCheckButton.new(top) do
text 'cn-en'
variable checked
pack({'padx'=>8,'pady'=>10})
end
TkLabel.new(top){ text 'Enter text:';pack(ph)}
@text=TkVariable.new
@result=TkVariable.new
TkEntry.new(top,'textvariable'=>@text,'width'=>40).pack(ph)
pig_b=TkButton.new(top){text '翻译';pack ph}
#翻译按钮事件
pig_b.command{ translate(checked.value) }
TkLabel.new(top){ text 'Translate Result:';pack(ph)}
TkEntry.new(top,'textvariable'=>@result,'width'=>40).pack(ph)
pig_a=TkButton.new(top) do
text 'Exit'
pack ph
command {exit}
end
top.pack('fill'=>'both','side'=>'top')
end
def translate(checked)
langpair='en|zh-CN'
langpair='zh-CN|en' if checked=='1'
#开一个新线程处理
Thread.new do
begin
response=Net::HTTP.Proxy($proxy_addr,$proxy_port).post_form(URI.parse(@url),
{'text'=>@text.value,'langpair'=>langpair})
response.body =~ /<div id=result_box dir=ltr>(.*?)<\/div>/
@result.value=$1
rescue Exception=>e
@log.error(e)
end
end
end
end
GoogleTranslate.new("http://translate.google.com/translate_t")
Tk.mainloop
require 'tk'
require 'logger'
#设置代理
$proxy_addr='x.x.x.x'
$proxy_port='80'
class GoogleTranslate
def initialize(url)
@log = Logger.new("translate.log")
@log.level = Logger::WARN
@url=url
ph={'padx'=>50,'pady'=>10}
root=TkRoot.new{ title 'google 翻译程序'}
top=TkFrame.new(root) {background "white"}
#checkbutton,用于选择翻译类别
checked=TkVariable.new
TkCheckButton.new(top) do
text 'cn-en'
variable checked
pack({'padx'=>8,'pady'=>10})
end
TkLabel.new(top){ text 'Enter text:';pack(ph)}
@text=TkVariable.new
@result=TkVariable.new
TkEntry.new(top,'textvariable'=>@text,'width'=>40).pack(ph)
pig_b=TkButton.new(top){text '翻译';pack ph}
#翻译按钮事件
pig_b.command{ translate(checked.value) }
TkLabel.new(top){ text 'Translate Result:';pack(ph)}
TkEntry.new(top,'textvariable'=>@result,'width'=>40).pack(ph)
pig_a=TkButton.new(top) do
text 'Exit'
pack ph
command {exit}
end
top.pack('fill'=>'both','side'=>'top')
end
def translate(checked)
langpair='en|zh-CN'
langpair='zh-CN|en' if checked=='1'
#开一个新线程处理
Thread.new do
begin
response=Net::HTTP.Proxy($proxy_addr,$proxy_port).post_form(URI.parse(@url),
{'text'=>@text.value,'langpair'=>langpair})
response.body =~ /<div id=result_box dir=ltr>(.*?)<\/div>/
@result.value=$1
rescue Exception=>e
@log.error(e)
end
end
end
end
GoogleTranslate.new("http://translate.google.com/translate_t")
Tk.mainloop
文章转自庄周梦蝶 ,原文发布时间 2007-09-04
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的