|
...
|
...
|
@@ -24,11 +24,10 @@ class TranslateLogic extends BaseLogic |
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :
|
|
|
|
* @name :getTranslateList
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2024/1/12 9:43
|
|
|
|
* 获取翻译校对文案
|
|
|
|
* @return array
|
|
|
|
* @throws \App\Exceptions\AsideGlobalException
|
|
|
|
* @throws \App\Exceptions\BsideGlobalException
|
|
|
|
*/
|
|
|
|
public function getTranslateList(){
|
|
|
|
$data = [];
|
|
...
|
...
|
@@ -42,17 +41,52 @@ class TranslateLogic extends BaseLogic |
|
|
|
}
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
$url = $this->user['domain'].(($this->param['url'] != '/') ? $this->param['url'] : '');
|
|
|
|
// 需要校对路由
|
|
|
|
$url = $this->user['domain'] . (($this->param['url'] != '/') ? $this->param['url'] : '');
|
|
|
|
// 需要校对语种
|
|
|
|
$languageInfo = $this->getLanguage($this->param['language_id']);
|
|
|
|
// 原始校对内容
|
|
|
|
$info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
|
|
|
|
//获取当前URl的所有文本内容
|
|
|
|
$new_key = $this->getUrlRead($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($new_key, $languageInfo['short']);
|
|
|
|
$translate_list = Translate::tran($need_tran, $languageInfo['short']);
|
|
|
|
if(empty($translate_list)){
|
|
|
|
$this->fail('翻译失败,请联系管理员');
|
|
|
|
$this->fail('翻译失败,请稍后重试!');
|
|
|
|
}
|
|
|
|
foreach ($new_key as $k=>$v){
|
|
|
|
foreach ($need_tran as $k=>$v){
|
|
|
|
$data[] = [
|
|
|
|
trim($v)=>$translate_list[$k],
|
|
|
|
];
|
|
...
|
...
|
@@ -65,7 +99,7 @@ class TranslateLogic extends BaseLogic |
|
|
|
$old_key[] = $k;
|
|
|
|
$data[] = [$k => $v];
|
|
|
|
}
|
|
|
|
$arr2 = array_values(array_diff($new_key, $old_key));
|
|
|
|
$arr2 = array_values(array_diff($need_tran, $old_key));
|
|
|
|
if(!empty($arr2)){
|
|
|
|
$translate_list = Translate::tran($arr2, $languageInfo['short']);
|
|
|
|
if(count($arr2) == 1){
|
|
...
|
...
|
@@ -153,11 +187,9 @@ class TranslateLogic extends BaseLogic |
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :获取Url内容
|
|
|
|
* @name :getUrlRead
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2023/11/22 10:02
|
|
|
|
* 获取url HTML需要翻译的文本
|
|
|
|
* @param $url
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
public function getUrlRead($url){
|
|
|
|
$dom = file_get_html($url);
|
|
...
|
...
|
@@ -184,10 +216,9 @@ class TranslateLogic extends BaseLogic |
|
|
|
}
|
|
|
|
$need_tran[] = htmlspecialchars_decode(html_entity_decode($string));
|
|
|
|
}
|
|
|
|
$need_tran[] = $description->attr['content'];
|
|
|
|
$need_tran[] = $keywords->attr['content'];
|
|
|
|
$need_tran[] = $description ? $description->attr['content'] : '';
|
|
|
|
$need_tran[] = $keywords ? $keywords->attr['content'] : '';
|
|
|
|
return $need_tran;
|
|
|
|
return $data;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
...
|
...
|
|