作者 lyh

gx

... ... @@ -49,71 +49,38 @@ class TranslateLogic extends BaseLogic
$info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
//获取当前URl的所有文本内容
$text_array = $this->getUrlRead($url);
// TODO 获取原始校对内容, 获取字符数组, 过滤已有内容, 进行翻译, 合并原始内容
$origin_text = json_decode($info['data'], true);
$need_tran = array_values(array_diff($text_array, array_keys($origin_text)));
if ($need_tran) {
$i = 0;
TranslateText:
$translate_list = Translate::tran($need_tran, $languageInfo['short']);
if(empty($translate_list)){
if ($i < 3) {
$i++;
goto TranslateText;
}
$this->fail('翻译失败,请稍后重试!');
}
// 只有一个内容对象, 直接返回字符串
if (FALSE == is_array($translate_list)) {
$translate_list = [$translate_list];
}
// 拼装机翻内容
foreach ($need_tran as $key=>$val){
array_push($data, [$val => $translate_list[$key]]);
}
}
// 拼装原始校对内容
foreach ($origin_text as $key=>$val) {
array_push($data, [$key => $val]);
}
return $this->success($data);
// 原始校对程序
if($info === false){
$translate_list = Translate::tran($need_tran, $languageInfo['short']);
if(empty($translate_list)){
$this->fail('翻译失败,请稍后重试!');
}
foreach ($need_tran as $k=>$v){
$data[] = [
trim($v)=>$translate_list[$k],
];
}
return $this->success($data);
}
$old_key = [];//key值组成数据
if($info !== false){
$data_read = json_decode($info['data'],JSON_UNESCAPED_UNICODE);
foreach ($data_read as $k => $v){
$old_key[] = $k;
$data[] = [$k => $v];
}
$arr2 = array_values(array_diff($need_tran, $old_key));
}
$arr2 = array_values(array_diff($text_array, $old_key));
if(!empty($arr2)){
$i = 0;
TranslateText:
$translate_list = Translate::tran($arr2, $languageInfo['short']);
if(empty($translate_list)){
if ($i < 3) {
$i++;
goto TranslateText;
}
$this->fail('翻译失败,请稍后重试!');
}
if(count($arr2) == 1){
$data[] = [
$arr2[0]=>$translate_list
];
}else{
if(!empty($translate_list)){
foreach ($arr2 as $k => $v){
$data[] = [
trim($v)=>$translate_list[$k]
];
}
}
}
}
return $this->success($data);
... ...