您的位置:首页 > 其它

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

2014-06-13 14:55 603 查看
要做一个在线实时聊天系统,而且还要实时双语翻译(中、俄)。头疼

先找了一个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; 
} 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: