作者 张关杰

Merge branch 'develop' of http://47.244.231.31:8099/zhl/globalso-v6 into bate

... ... @@ -11,6 +11,7 @@ use App\Models\Inquiry\InquiryFormData;
use App\Models\Nav\BNav;
use App\Models\Nav\BNavGroup;
use App\Models\Project\Project;
use App\Models\WebSetting\Translate as TranslateModel;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use Illuminate\Database\Eloquent\Model;
... ... @@ -54,6 +55,24 @@ class Test extends Command
*/
public function handle()
{
ProjectServer::useProject(3);
$data = [
'c' => 'c',
'b' => 'a',
'a' => 'b',
'e' => 'e',
];
$param = [
'type'=>1,
'project_id'=>3,
'url'=>'/',
'language_id'=>2,
'alias'=>'zh',
];
$param['data'] = json_encode($data,true);
TranslateModel::insert($param);
dd('end');
$this->model->add($param);
ProjectServer::useProject(1);
$group =BNavGroup::where(['id' => 1])->first();
$sort_list = json_decode($group->sort_list, true);
... ...
... ... @@ -116,7 +116,7 @@ class CustomModuleLogic extends BaseLogic
public function checkIsName($name,$id = 0){
$param['name'] = $name;
if(!empty($id)){
$param['id'] = ['id'=>['!=',$id]];
$param['id'] = ['!=',$id];
}
$info = (new CustomModule())->read($param);
if($info !== false){
... ...
... ... @@ -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){
... ...