及时通讯的学习
来源:互联网 发布:quiver mac 破解版 编辑:程序博客网 时间:2024/04/28 07:56
spark是一个即时通讯客户端,参见:http://www.igniterealtime.org/projects/spark/
搭配openfire,可以做一个很好的企业内部通讯平台。
另外spark支持自己开发插件,拥有不错的扩展性,唯一的缺点是个头比较大。
spark有一个翻译插件,可惜老是乱码,正好我需要这样一个插件,就拿来改了一下。
下载spark的源码从svn。最新的版本是2.5.8,就从tag里取。
当然要从trunk里取也行。
源码的地址都在这里:http://www.igniterealtime.org/downloads/source.jsp
它是缺省用idea来编译的,你可以创建一个eclipse项目,从源码里,很方便,把不需要的plugin都从源码里除掉,因为有一些apple和linux的东西编译会通不过的。
就剩下一个插件:translator。
主要是两个类,TranslatorPlugin 和 TranslatorUtil,先把TranslatorUtil调试好,可以中英互翻,输出都是utf8。
这个应该很容易的,然后就修改TranslatorPlugin中关于message listener的地方。
原来是这样的
现在改为:
TransUtil是我新建的类,因为我不是使用google翻译引擎,是用自己的翻译引擎,所以就新建了一个类。
然后在输出的时候将原文和译文同时输出:
要先删除body
然后再加入,并且强制定为zh
当然也可以判断翻译类型后再确定语言,但是不要让它自己去判断,会有很多不确定因素的。我这儿省事强制定为zh,也适用于中翻英。
看了smack(spark使用的通讯库)的源码后,才发现每个body是根据语言来放的,而且一个message允许有多个body和多种语言。但是最后输出却并不是全部输出,所以要先清干净,然后再加入body。
如果不指定语言,则会根据内容来进行判断,但并不准确,所以还是要指定语言,这个是来自java的Locale的。
我在ubuntu和xp上试验成功,都是缺省中文环境,中英互翻都可以。
搭配openfire,可以做一个很好的企业内部通讯平台。
另外spark支持自己开发插件,拥有不错的扩展性,唯一的缺点是个头比较大。
spark有一个翻译插件,可惜老是乱码,正好我需要这样一个插件,就拿来改了一下。
下载spark的源码从svn。最新的版本是2.5.8,就从tag里取。
- svn co http://svn.igniterealtime.org/svn/repos/spark/tags/spark_2_5_8 spark
svn co http://svn.igniterealtime.org/svn/repos/spark/tags/spark_2_5_8 spark
当然要从trunk里取也行。
源码的地址都在这里:http://www.igniterealtime.org/downloads/source.jsp
它是缺省用idea来编译的,你可以创建一个eclipse项目,从源码里,很方便,把不需要的plugin都从源码里除掉,因为有一些apple和linux的东西编译会通不过的。
就剩下一个插件:translator。
主要是两个类,TranslatorPlugin 和 TranslatorUtil,先把TranslatorUtil调试好,可以中英互翻,输出都是utf8。
这个应该很容易的,然后就修改TranslatorPlugin中关于message listener的地方。
原来是这样的
- String currentBody = message.getBody();
- TranslatorUtil.TranslationType type =
- (TranslatorUtil.TranslationType)translatorBox.getSelectedItem();
- if (type != null && type != TranslatorUtil.TranslationType.None) {
- currentBody = TranslatorUtil.translate(currentBody, type);
- message.setBody(currentBody);
- }
String currentBody = message.getBody(); TranslatorUtil.TranslationType type = (TranslatorUtil.TranslationType)translatorBox.getSelectedItem(); if (type != null && type != TranslatorUtil.TranslationType.None) { currentBody = TranslatorUtil.translate(currentBody, type); message.setBody(currentBody); }
现在改为:
- String currentBody = message.getBody();
- TransUtil.TranslationType type =
- (TransUtil.TranslationType)translatorBox.getSelectedItem();
- if (currentBody!=null && type != null && type != TransUtil.TranslationType.None) {
- String transBody = TransUtil.translate(currentBody, type);
- if(transBody!=null) {
- String body = currentBody+" ("+transBody+")";
- message.removeBody((String)null);
- message.addBody("zh",body);
- }
- }
String currentBody = message.getBody();TransUtil.TranslationType type = (TransUtil.TranslationType)translatorBox.getSelectedItem();if (currentBody!=null && type != null && type != TransUtil.TranslationType.None) { String transBody = TransUtil.translate(currentBody, type); if(transBody!=null) { String body = currentBody+" ("+transBody+")"; message.removeBody((String)null); message.addBody("zh",body); }}
TransUtil是我新建的类,因为我不是使用google翻译引擎,是用自己的翻译引擎,所以就新建了一个类。
然后在输出的时候将原文和译文同时输出:
- String body = currentBody+" ("+transBody+")";
String body = currentBody+" ("+transBody+")";
要先删除body
- message.removeBody((String)null);
message.removeBody((String)null);
然后再加入,并且强制定为zh
- message.addBody("zh",body);
message.addBody("zh",body);
当然也可以判断翻译类型后再确定语言,但是不要让它自己去判断,会有很多不确定因素的。我这儿省事强制定为zh,也适用于中翻英。
看了smack(spark使用的通讯库)的源码后,才发现每个body是根据语言来放的,而且一个message允许有多个body和多种语言。但是最后输出却并不是全部输出,所以要先清干净,然后再加入body。
如果不指定语言,则会根据内容来进行判断,但并不准确,所以还是要指定语言,这个是来自java的Locale的。
我在ubuntu和xp上试验成功,都是缺省中文环境,中英互翻都可以。
- 及时通讯的学习
- 基于野狗的及时通讯
- 基于融云的及时通讯
- 环信及时通讯的整合SDK
- 基于XMPP协议的及时通讯
- 测试及时通讯工具
- 及时通讯原理
- 网页及时通讯
- web 及时通讯
- Socket及时通讯
- websocket 聊天室(及时通讯)
- IOS及时通讯中消息的处理方式
- NodeJS+Express+Socket.io的简单及时通讯
- xmpp 及时通讯客户端开发
- Socket及时通讯小范例
- iOS websocket 及时通讯实现
- 及时通讯之语音实现
- 集趣(及时通讯聊天)
- fjnu 1151 Adding 1s, 2s, and 3s
- 转义字符列表
- Tomcat连接池配置及其应用v1.0
- fjnu 1700 最长递增子序列
- 关于html中script和ActiveX交互的问题
- 及时通讯的学习
- Mozilla:Firefox 3准备进入全盛时期
- 你好,世界。
- hibernate3.0以上中执行存储过程
- [转]SendMessage参数详解(转) - fxbgood的专栏 - CSDNBlog
- fjnu 1409 猫和老鼠
- JSP数据库连接大全
- Hibernate 主键生成方式
- fjnu 1713 最长同号连续段