作者 zhl

u 翻译校对

@@ -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