免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7084 | 回复: 0
打印 上一主题 下一主题

用 xmpppy 和 Google Talk bot 制作命令行翻译机器人 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-15 09:41 |只看该作者 |倒序浏览
用 xmpppy 和 Google Talk bot 制作命令行翻译机器人

命令行偏执狂们都喜欢用字符命令搞定一切,当然应该包括翻译在内。最近兄弟我在翻译 Django 1.0 的 zh_CN locale 文件时,颇为那一大堆国名地名所困扰。为了准确翻译,要把这些名词逐一在 PoeditPidgin(我用的是 Google Talk en2zh boten2zh@bot.talk.google.com)两个窗口之间来回反复拷贝粘贴。拷贝原文,粘贴原文,回车,拷贝译文,粘贴译文——翻译一个地名至少需要耗费五步操作,翻译两百个地名就是一千次操作,怎么不头晕呢?

于是就想到利用 xmpppy 来制作一个 en2zh 命令行工具,实现自动翻译。好在 xmpppy 已经提供了 xtalk.py 代码样例,只要略作修改即可:

     
--- xtalk.py  2006-10-06 20:30:42.000000000 +0800
+++ en2zh.py  2008-09-07 08:37:22.000000000 +0800
@@ -1,4 +1,6 @@
#!/usr/bin/python
+# en2zh.py = xtalk.py + en2zh@bot.talk.google.com
+# @Copyleft 2008 hutuworm (http://hutuworm.blogspot.com)
# $Id: xtalk.py,v 1.2 2006/10/06 12:30:42 normanr Exp $
import sys,os,xmpp,time,select

@@ -15,7 +17,8 @@
      type = event.getType()
      fromjid = event.getFrom().getStripped()
      if type in ['message', 'chat', None] and fromjid == self.remotejid:
- sys.stdout.write(event.getBody() + '\n')
+ sys.stdout.write(event.getBody().encode('utf8') + '\n' )
+  sys.exit(0)

  def stdio_message(self, message):
      m = xmpp.protocol.Message(to=self.remotejid,body=message,typ='chat')
@@ -27,22 +30,23 @@
      if not con:
          sys.stderr.write('could not connect!\n')
          return False
- sys.stderr.write('connected with %s\n'%con)
+ #sys.stderr.write('connected with %s\n'%con)
      auth=self.jabber.auth(jid.getNode(),jidparams['password'],resource=jid.getResource())
      if not auth:
          sys.stderr.write('could not authenticate!\n')
          return False
- sys.stderr.write('authenticated using %s\n'%auth)
+ #sys.stderr.write('authenticated using %s\n'%auth)
      self.register_handlers()
      return con

if __name__ == '__main__':

  if len(sys.argv) < 2:
- print "Syntax: xtalk JID"
+ print "Syntax: en2zh text"
      sys.exit(0)

- tojid=sys.argv[1]
+ tojid='en2zh@bot.talk.google.com'
+ text=sys.argv[1]

  jidparams={}
  if os.access(os.environ['HOME']+'/.xtalk',os.R_OK):
@@ -66,6 +70,8 @@
      sys.exit(1)

  #cl.SendInitPresence(requestRoster=0) # you may need to uncomment this for old server
+
+ bot.stdio_message(text)

  socketlist = {cl.Connection._sock:'xmpp',sys.stdin:'stdio'}
  online = 1


或者直接下载修改后的 en2zh.py: http://github.com/hutuworm/minitrue/tree/master/en2zh.py

然后按以下步骤设置并使用:

0. 安装 xmpppy:  $ easy_install xmpppy

1. 在 home 目录中创建 .xtalk 配置文件,设定你的 Google Talk 用户名和密码,为了安全起见,必须将该文件权限设为 0600:

$ cat .xtalk

       #Uncommentfields before use and type in correct credentials.#JID=romeo@montague.net/resource (/resource is optional)#PASSWORD=juliet
   
       JID=your-id@gmail.com
   
       PASSWORD=your-password
   
       $ chmod 0600 .xtalk        


2. 测试翻译:

$ python en2zh.py "Bosnia and Herzegovina"

波斯尼亚和黑塞哥维那


3. 自行编写任意命令代码,调用 en2zh.py 完成自动翻译工作。(注意:Google Talk en2zh bot 比较适合翻译名词、短语,翻译完毕之后无论如何一定要检查一遍。)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP