正在显示
1 个修改的文件
包含
50 行增加
和
19 行删除
| @@ -24,11 +24,10 @@ class TranslateLogic extends BaseLogic | @@ -24,11 +24,10 @@ class TranslateLogic extends BaseLogic | ||
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | /** | 26 | /** |
| 27 | - * @remark : | ||
| 28 | - * @name :getTranslateList | ||
| 29 | - * @author :lyh | ||
| 30 | - * @method :post | ||
| 31 | - * @time :2024/1/12 9:43 | 27 | + * 获取翻译校对文案 |
| 28 | + * @return array | ||
| 29 | + * @throws \App\Exceptions\AsideGlobalException | ||
| 30 | + * @throws \App\Exceptions\BsideGlobalException | ||
| 32 | */ | 31 | */ |
| 33 | public function getTranslateList(){ | 32 | public function getTranslateList(){ |
| 34 | $data = []; | 33 | $data = []; |
| @@ -42,17 +41,52 @@ class TranslateLogic extends BaseLogic | @@ -42,17 +41,52 @@ class TranslateLogic extends BaseLogic | ||
| 42 | } | 41 | } |
| 43 | return $this->success($data); | 42 | return $this->success($data); |
| 44 | } | 43 | } |
| 45 | - $url = $this->user['domain'].(($this->param['url'] != '/') ? $this->param['url'] : ''); | 44 | + // 需要校对路由 |
| 45 | + $url = $this->user['domain'] . (($this->param['url'] != '/') ? $this->param['url'] : ''); | ||
| 46 | + // 需要校对语种 | ||
| 46 | $languageInfo = $this->getLanguage($this->param['language_id']); | 47 | $languageInfo = $this->getLanguage($this->param['language_id']); |
| 48 | + // 原始校对内容 | ||
| 47 | $info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]); | 49 | $info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]); |
| 48 | //获取当前URl的所有文本内容 | 50 | //获取当前URl的所有文本内容 |
| 49 | - $new_key = $this->getUrlRead($url); | 51 | + $text_array = $this->getUrlRead($url); |
| 52 | + // TODO 获取原始校对内容, 获取字符数组, 过滤已有内容, 进行翻译, 合并原始内容 | ||
| 53 | + $origin_text = json_decode($info['data'], true); | ||
| 54 | + $need_tran = array_values(array_diff($text_array, array_keys($origin_text))); | ||
| 55 | + | ||
| 56 | + if ($need_tran) { | ||
| 57 | + $i = 0; | ||
| 58 | + TranslateText: | ||
| 59 | + $translate_list = Translate::tran($need_tran, $languageInfo['short']); | ||
| 60 | + if(empty($translate_list)){ | ||
| 61 | + if ($i < 3) { | ||
| 62 | + $i++; | ||
| 63 | + goto TranslateText; | ||
| 64 | + } | ||
| 65 | + $this->fail('翻译失败,请稍后重试!'); | ||
| 66 | + } | ||
| 67 | + // 只有一个内容对象, 直接返回字符串 | ||
| 68 | + if (FALSE == is_array($translate_list)) { | ||
| 69 | + $translate_list = [$translate_list]; | ||
| 70 | + } | ||
| 71 | + // 拼装机翻内容 | ||
| 72 | + foreach ($need_tran as $key=>$val){ | ||
| 73 | + array_push($data, [$val => $translate_list[$key]]); | ||
| 74 | + } | ||
| 75 | + } | ||
| 76 | + // 拼装原始校对内容 | ||
| 77 | + foreach ($origin_text as $key=>$val) { | ||
| 78 | + array_push($data, [$key => $val]); | ||
| 79 | + } | ||
| 80 | + return $this->success($data); | ||
| 81 | + | ||
| 82 | + // 原始校对程序 | ||
| 83 | + | ||
| 50 | if($info === false){ | 84 | if($info === false){ |
| 51 | - $translate_list = Translate::tran($new_key, $languageInfo['short']); | 85 | + $translate_list = Translate::tran($need_tran, $languageInfo['short']); |
| 52 | if(empty($translate_list)){ | 86 | if(empty($translate_list)){ |
| 53 | - $this->fail('翻译失败,请联系管理员'); | 87 | + $this->fail('翻译失败,请稍后重试!'); |
| 54 | } | 88 | } |
| 55 | - foreach ($new_key as $k=>$v){ | 89 | + foreach ($need_tran as $k=>$v){ |
| 56 | $data[] = [ | 90 | $data[] = [ |
| 57 | trim($v)=>$translate_list[$k], | 91 | trim($v)=>$translate_list[$k], |
| 58 | ]; | 92 | ]; |
| @@ -65,7 +99,7 @@ class TranslateLogic extends BaseLogic | @@ -65,7 +99,7 @@ class TranslateLogic extends BaseLogic | ||
| 65 | $old_key[] = $k; | 99 | $old_key[] = $k; |
| 66 | $data[] = [$k => $v]; | 100 | $data[] = [$k => $v]; |
| 67 | } | 101 | } |
| 68 | - $arr2 = array_values(array_diff($new_key, $old_key)); | 102 | + $arr2 = array_values(array_diff($need_tran, $old_key)); |
| 69 | if(!empty($arr2)){ | 103 | if(!empty($arr2)){ |
| 70 | $translate_list = Translate::tran($arr2, $languageInfo['short']); | 104 | $translate_list = Translate::tran($arr2, $languageInfo['short']); |
| 71 | if(count($arr2) == 1){ | 105 | if(count($arr2) == 1){ |
| @@ -153,11 +187,9 @@ class TranslateLogic extends BaseLogic | @@ -153,11 +187,9 @@ class TranslateLogic extends BaseLogic | ||
| 153 | } | 187 | } |
| 154 | 188 | ||
| 155 | /** | 189 | /** |
| 156 | - * @remark :获取Url内容 | ||
| 157 | - * @name :getUrlRead | ||
| 158 | - * @author :lyh | ||
| 159 | - * @method :post | ||
| 160 | - * @time :2023/11/22 10:02 | 190 | + * 获取url HTML需要翻译的文本 |
| 191 | + * @param $url | ||
| 192 | + * @return array | ||
| 161 | */ | 193 | */ |
| 162 | public function getUrlRead($url){ | 194 | public function getUrlRead($url){ |
| 163 | $dom = file_get_html($url); | 195 | $dom = file_get_html($url); |
| @@ -184,10 +216,9 @@ class TranslateLogic extends BaseLogic | @@ -184,10 +216,9 @@ class TranslateLogic extends BaseLogic | ||
| 184 | } | 216 | } |
| 185 | $need_tran[] = htmlspecialchars_decode(html_entity_decode($string)); | 217 | $need_tran[] = htmlspecialchars_decode(html_entity_decode($string)); |
| 186 | } | 218 | } |
| 187 | - $need_tran[] = $description->attr['content']; | ||
| 188 | - $need_tran[] = $keywords->attr['content']; | 219 | + $need_tran[] = $description ? $description->attr['content'] : ''; |
| 220 | + $need_tran[] = $keywords ? $keywords->attr['content'] : ''; | ||
| 189 | return $need_tran; | 221 | return $need_tran; |
| 190 | - return $data; | ||
| 191 | } | 222 | } |
| 192 | 223 | ||
| 193 | 224 |
-
请 注册 或 登录 后发表评论