在线聊天功能 实现中俄双语实时翻译 原创 加精!!

要做一个在线实时聊天系统,而且还要实时双语翻译(中、俄)。头疼

先找了一个php在线客服系统 带源码的。看懂源码后在上面加翻译功能,一共耗时4天弄出来的。

代码如下:

if(mb_detect_encoding($fdata,"UTF-8, GBK") != "UTF-8"){

    //$fdata = mb_detect_encoding($fdata,"UTF-8, GBK")

    $fdata = mb_convert_encoding($fdata,‘utf-8‘,‘CP936‘);

}

if (preg_match("/[\x{4e00}-\x{9fa5}]./u",$fdata)) {

$ewen = baiduTran(urlencode($fdata));

$fdata .= "<br>"; 

     $fdata .= $ewen;

} else {

$zhongwen = baiduTran(urlencode($fdata),‘ru‘,‘zh‘);

$fdata .= "<br>";

$fdata .= $zhongwen;

$fdata = mb_convert_encoding($fdata,‘gbk‘,‘utf-8‘);

 

下面是调用baiduTran()的函数:

function baiduTran($text,$from=‘zh‘,$to=‘ru‘){

if(empty($text)) return "";

$wf=file_get_contents("http://openapi.baidu.com/public/2.0/bmt/translate?client_id=GTK5cWTRRSEDKt829jf4DdnL&q=$text&from=$from&to=$to");

if (false===$wf||empty($wf)){

return false;

}

$obj =json_decode($wf);

$obj=$obj->{‘trans_result‘};

$trans_result=$obj[0];

$dst=$trans_result->{‘dst‘};

return $dst;

 

 

 

详细解释:

//检测中文还是俄文的时候必须是utf-8字体,就需要转换字体

if(mb_detect_encoding($fdata,"UTF-8, GBK") != "UTF-8"){//先需要侦测字符编码是什么

    //$fdata = mb_detect_encoding($fdata,"UTF-8, GBK") //通过这个发现:前台页面传到后台的字体是:CP93。经测试买家端输入的字符传到后台就是gbk,卖家端输入的字符传到后台是CP93    真神奇

    $fdata = mb_convert_encoding($fdata,‘utf-8‘,‘CP936‘);//需要把CP936字体转换成utf-8字体

//检测输入是中文还是俄文

if (preg_match("/[\x{4e00}-\x{9fa5}]./u",$fdata)) { //原理是判断字体是否含有中文(找这个表达式费老劲了)

$ewen = baiduTran(urlencode($fdata));//输入的是中文 翻译成俄文

$fdata .= "<br>"; //把原来的和翻译过的加在一起 中间加个回车

     $fdata .= $ewen;

} else {  //输入的是俄文 翻译成中文

$zhongwen = baiduTran(urlencode($fdata),‘ru‘,‘zh‘); //输入的是中文 翻译成俄文

$fdata .= "<br>";//把原来的和翻译过的加在一起 中间加个回车

$fdata .= $zhongwen;

//将转换后的字体再转换成gbk否则前台页面显示乱码

$fdata = mb_convert_encoding($fdata,‘gbk‘,‘utf-8‘);

 

 

//百度翻译函数

function baiduTran($text,$from=‘zh‘,$to=‘ru‘){ //默认是中文翻译成俄文

if(empty($text)) return "";

$wf=file_get_contents("http://openapi.baidu.com/public/2.0/bmt/translate?client_id=GTK5cWTRRSEDKt829jf4DdnL&q=$text&from=$from&to=$to"); 

//此处的client_id需要填入获取的appid,和百度地图api类似,在百度云开发者注册。

 if (false===$wf||empty($wf)){

return false;

}

$obj =json_decode($wf);

$obj=$obj->{‘trans_result‘};

$trans_result=$obj[0];

$dst=$trans_result->{‘dst‘};

return $dst;

 

That‘s all ,thank you

在线聊天功能 实现中俄双语实时翻译 原创 加精!!,布布扣,bubuko.com

时间: 2024-11-07 09:46:09

在线聊天功能 实现中俄双语实时翻译 原创 加精!!的相关文章

javaweb与websocket实现在线聊天功能总结

技术从一开始ajax轮询后来改成websocket 碰到的一些问题的处理: websocket的pom依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-websocket</artifactId> <version>4.0.5.RELEASE</version> </dependency> 首先是配置处理器 imp

在线聊天系统设计(原理+思路+源码)

这周项目要做一个在线聊天系统,感觉不是特别困难,原理也很简单,分享给大家. 技术: Java(Spring)+Mysql+MemCache Spring做的是事件驱动模型,所有DB,更新缓存操作改成异步的. MemCache存放缓存,每个用户的聊天记录缓存,好友关系维护. 需求: 用户分为虚拟用户,普通用户,高级用户(在线经理人),管理员用户(客服). 虚拟,普通用户有一个好友列表,好友列表保存着用户的好友,对于虚拟,普通用户来说,他们的好友列表只有高级用户+管理员用户. 高级用户,管理员用户来

JavaWeb个人博客支持插入源码和在线聊天(含源码)

原文地址:http://www.cnblogs.com/liaoyu/p/uudisk.html 源码地址:https://github.com/liaoyu/uublogs 用JavaWeb写了一个简单的博客系统,支持在线插入源码和图片,编辑器为KindEditor,为了练习JQuery,加入在线聊天功能.用得还是很古老的JSP+Servlet,由于做到后来,兴趣减少及时间的原因,还有很多功能没有完成.. 开发环境:myeclipse mysql5 jdk6 主页: 留言: 在线聊天: 搭配项

java Socket实现简单在线聊天(一)

出处:http://blog.csdn.net/tuzongxun 最近的项目有一个在线网页交流的需求,由于很久以前做过的demo已经忘记的差不多了,因此便重新学习一下. 我计划的大致实现步骤分这样几大步: 1.使用awt组件和socket实现简单的单客户端向服务端持续发送消息: 2.结合线程,实现多客户端连接服务端发送消息: 3.实现服务端转发客户端消息至所有客户端,同时在客户端显示: 4.把awt组件生成的窗口界面改成前端jsp或者html展示的界面,java socket实现的客户端改为前

SpringBoot+Vue+WebSocket 实现在线聊天

一.前言 本文将基于 SpringBoot + Vue + WebSocket 实现一个简单的在线聊天功能 页面如下: 在线体验地址:http://www.zhengqingya.com:8101 二.SpringBoot + Vue + WebSocket 实现在线聊天 1.引入websocket依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo

基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。

基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室.

SignalR实现在线聊天室功能(欢迎、发送、回复、私信、屏蔽)

一.在线聊天室 1.新建解决方案 SignalROnlineChatDemo 2.新建MVC项目 SignalROnlineChatDemo.Web (无身份验证) 3.安装SignalR PM> install-package Microsoft.AspNet.SignalR 4. 创建一个称为 Startup.cs 的新类 1 public class Startup 2 { 3 public void Configuration(IAppBuilder app) 4 { 5 // 有关如何

Asp.NET MVC 使用 SignalR 实现推送功能二(Hubs 在线聊天室 获取保存用户信息)

简单介绍 关于SignalR的简单实用 请参考 Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室) 在上一篇中,我们只是介绍了简单的消息推送,今天我们来修改一下,实现保存消息,历史消息和用户在线 由于,我这是在一个项目([无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目 目录索引)的基础上做的,所以使用到的一些借口和数据表,不详细解析,只是介绍一下思路和实现方式,供大家参考 用户登录注册信息 当用户登录之后,我们注册一下用户的信息,我们

java在线聊天项目1.1版 ——开启多个客户端,分别实现注册和登录功能,使用客户端与服务端信息request机制,重构线程,将单独的登录和注册线程合并

实现效果图: eclipse项目中初步整合之前的各个客户端和服务端的窗口与工具类,效果如下图: 已将注册服务器线程RegServer功能放到LoginServer中,使用客户端与服务端的request请求机制,根据请求是注册还是登录,分别进行相应response,客户端根据相应内容判断下一步操作. 发送信息的模式还较为原始,没有使用json方法,但gson包已经导入,支持发送键值对的字符串,及自动解析. 登录对话框LoginDialog类代码如下: package com.swift.frame