|
...
|
...
|
@@ -31,11 +31,11 @@ class TranslateLogic extends BaseLogic |
|
|
|
* @time :2024/1/12 9:43
|
|
|
|
*/
|
|
|
|
public function getTranslateList(){
|
|
|
|
$data = [];
|
|
|
|
if($this->param['url'] == 'All'){
|
|
|
|
$info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
|
|
|
|
$data = [];
|
|
|
|
if(!empty($info) && !empty($info['data'])){
|
|
|
|
$translateInfo = json_decode($info['data'],true);
|
|
|
|
$translateInfo = json_decode($info['data'],JSON_UNESCAPED_UNICODE);
|
|
|
|
foreach ($translateInfo as $k => $v){
|
|
|
|
$data[] = [$k=>$v];
|
|
|
|
}
|
|
...
|
...
|
@@ -44,11 +44,10 @@ class TranslateLogic extends BaseLogic |
|
|
|
}
|
|
|
|
$url = $this->user['domain'].(($this->param['url'] != '/') ? $this->param['url'] : '');
|
|
|
|
$languageInfo = $this->getLanguage($this->param['language_id']);
|
|
|
|
$info = $this->model->read(['url'=>str_replace_url($this->param['url']),'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
|
|
|
|
$info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
|
|
|
|
//获取当前URl的所有文本内容
|
|
|
|
$new_key = $this->getUrlRead($url);
|
|
|
|
if($info === false){
|
|
|
|
$data = [];
|
|
|
|
$translate_list = Translate::tran($new_key, $languageInfo['short']);
|
|
|
|
foreach ($new_key as $k=>$v){
|
|
|
|
$data[] = [
|
|
...
|
...
|
@@ -58,20 +57,27 @@ class TranslateLogic extends BaseLogic |
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
$old_key = [];//key值组成数据
|
|
|
|
$data = json_decode($info['data'],true);
|
|
|
|
foreach ($data as $k => $v){
|
|
|
|
$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($new_key, $old_key));
|
|
|
|
if(!empty($arr2)){
|
|
|
|
$translate_list = Translate::tran($arr2, $languageInfo['short']);
|
|
|
|
foreach ($arr2 as $k1=>$v1){
|
|
|
|
if(count($arr2) == 1){
|
|
|
|
$data[] = [
|
|
|
|
trim($v1)=>$translate_list[$k1]
|
|
|
|
$arr2[0]=>$translate_list
|
|
|
|
];
|
|
|
|
}else{
|
|
|
|
foreach ($arr2 as $k => $v){
|
|
|
|
$data[] = [
|
|
|
|
trim($v)=>$translate_list[$k]
|
|
|
|
];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$this->success($data);
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
...
|
...
|
@@ -86,7 +92,7 @@ class TranslateLogic extends BaseLogic |
|
|
|
$info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
|
|
|
|
$data = [];
|
|
|
|
if(!empty($info) && !empty($info['data'])){
|
|
|
|
$translateInfo = json_decode($info['data'],true);
|
|
|
|
$translateInfo = json_decode($info['data'],JSON_UNESCAPED_UNICODE);
|
|
|
|
foreach ($translateInfo as $k => $v){
|
|
|
|
$data[] = [$k=>$v];
|
|
|
|
}
|
|
...
|
...
|
@@ -105,11 +111,11 @@ class TranslateLogic extends BaseLogic |
|
|
|
}
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
$new_list = $this->getUrlImageRead($this->param['url']);
|
|
|
|
$new_list = $this->getUrlImageRead($url);
|
|
|
|
$old_list = [];
|
|
|
|
$data = json_decode($info['data'],true);
|
|
|
|
foreach ($data as $k=>$v){
|
|
|
|
$old_list[] = $v;
|
|
|
|
$data_read = json_decode($info['data'],JSON_UNESCAPED_UNICODE);
|
|
|
|
foreach ($data_read as $k=>$v){
|
|
|
|
$old_list[] = $k;
|
|
|
|
$data[] = [
|
|
|
|
$k=>$v,
|
|
|
|
];
|
|
...
|
...
|
@@ -157,6 +163,9 @@ class TranslateLogic extends BaseLogic |
|
|
|
];
|
|
|
|
$context = stream_context_create($contextOptions);
|
|
|
|
$sourceCode = file_get_contents($url, false, $context);
|
|
|
|
if(!$sourceCode){
|
|
|
|
$this->fail('当前url不存在');
|
|
|
|
}
|
|
|
|
// 过滤掉具有 "change-language-cont" 类的元素
|
|
|
|
$pattern = '/<div\b[^>]*\sclass=[\'"]([^\'"]*change-language-cont[^\'"]*)[\'"][^>]*>(.*?)<\/div>/is';
|
|
|
|
$sourceCode = preg_replace($pattern, '', $sourceCode);
|
|
...
|
...
|
@@ -172,19 +181,25 @@ class TranslateLogic extends BaseLogic |
|
|
|
$textContentArray = array_filter($matches[1], function($item) {
|
|
|
|
return !empty(trim($item));
|
|
|
|
});
|
|
|
|
// 过滤掉包含逗号加换行的内容
|
|
|
|
$textContentArray = array_filter($textContentArray, function($item) {
|
|
|
|
return strpos($item, ',') === false && strpos($item, PHP_EOL) === false;
|
|
|
|
});
|
|
|
|
$contentData = [];
|
|
|
|
foreach ($textContentArray as $v){
|
|
|
|
$content = trim($v);
|
|
|
|
$trimmedString = preg_replace('/\s+/', ' ', $content);
|
|
|
|
$contentData[] = $trimmedString;
|
|
|
|
}
|
|
|
|
$contentData = array_values($contentData);
|
|
|
|
$pattern = '/<meta\s+[^>]*name=[\'"](keywords|description)[\'"][^>]*content=[\'"]([^\'"]+)[\'"]/i'; // 匹配 name 为 "keywords" 或 "description" 的 meta 标签的正则表达式
|
|
|
|
$contentData = array_values($textContentArray);
|
|
|
|
$pattern = '/<meta\s+[^>]*name=[\'"](keywords|description)[\'"][^>]*content=[\'"]([^\'"]+)[\'"]>/i'; // 匹配 name 为 "keywords" 或 "description" 的 meta 标签的正则表达式
|
|
|
|
$matches = array();
|
|
|
|
preg_match_all($pattern, $strippedContent, $matches);
|
|
|
|
$metaData = array();
|
|
|
|
foreach ($matches[2] as $index => $content) {
|
|
|
|
$metaData[] = $content;
|
|
|
|
if(!empty(trim($content))){
|
|
|
|
$metaData[] = $content;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$data = array_merge($metaData, $contentData);
|
|
|
|
return $data;
|
|
...
|
...
|
@@ -239,10 +254,10 @@ class TranslateLogic extends BaseLogic |
|
|
|
'language_id'=>$this->param['language_id'],
|
|
|
|
'alias'=>$this->param['alias'],
|
|
|
|
];
|
|
|
|
$param['data'] = json_encode($this->param['data'],true);
|
|
|
|
$param['data'] = json_encode($this->param['data'],JSON_UNESCAPED_UNICODE);
|
|
|
|
$this->model->add($param);
|
|
|
|
}else{
|
|
|
|
$data = json_encode($this->param['data'],true);
|
|
|
|
$data = json_encode($this->param['data'],JSON_UNESCAPED_UNICODE);
|
|
|
|
$this->model->edit(['data'=>$data],['language_id'=>$this->param['language_id'],'url'=>$this->param['url'],'type'=>$this->param['type']]);
|
|
|
|
}
|
|
|
|
// }catch (\Exception $e){
|
...
|
...
|
|