首页 > 代码库 > 在线聊天功能 实现中俄双语实时翻译 原创 加精!!

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

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

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

代码如下:

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

    //$fdata = http://www.mamicode.com/mb_detect_encoding($fdata,"UTF-8, GBK")

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

    $fdata = http://www.mamicode.com/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 = http://www.mamicode.com/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