lip 3 maanden geleden
bovenliggende
commit
f9f690e5cb

+ 2 - 2
app/admin/controller/Config.php

@@ -21,7 +21,7 @@ class Config extends BaseController
         $flag = $this->request->param('flag', 1);
         $flag = $this->request->param('flag', 1);
         $where['flag'] = $flag;
         $where['flag'] = $flag;
         if ($flag == 3) {
         if ($flag == 3) {
-            $where['language_code'] = $this->lang;
+            $where['language_code'] = $this->request->param('language_code', $this->lang);
         }
         }
         $list = ConfigModel::where($where)->select();
         $list = ConfigModel::where($where)->select();
         $select = ConfigModel::getSelect($this->lang, true);
         $select = ConfigModel::getSelect($this->lang, true);
@@ -49,7 +49,7 @@ class Config extends BaseController
             } else {
             } else {
                 $params = (new ConfigValidate())->post()->goCheck('add');
                 $params = (new ConfigValidate())->post()->goCheck('add');
             }
             }
-            $params['language_code'] = $params['language_code'] ?? 'zh';
+            $params['language_code'] = $this->request->post('language_code') ?? 'zh';
 
 
             if (!empty($id)) {
             if (!empty($id)) {
                 $exist = ConfigModel::where('id', $id)->find();
                 $exist = ConfigModel::where('id', $id)->find();

+ 3 - 26
app/admin/controller/Kefu.php

@@ -18,7 +18,6 @@ use app\admin\model\KefuLog;
 use app\enterprise\model\{Message,Friend};
 use app\enterprise\model\{Message,Friend};
 use Exception;
 use Exception;
 use think\facade\Db;
 use think\facade\Db;
-use Google\Cloud\Translate\V2\TranslateClient;
 
 
 class Kefu extends BaseController
 class Kefu extends BaseController
 {
 {
@@ -495,32 +494,10 @@ class Kefu extends BaseController
             $language_code = $this->request->param('language_code') ?? $this->lang;
             $language_code = $this->request->param('language_code') ?? $this->lang;
             $msg_id = $this->request->param('msg_id');
             $msg_id = $this->request->param('msg_id');
             $content = Message::where('msg_id',$msg_id)->where('type','text')->value('content');
             $content = Message::where('msg_id',$msg_id)->where('type','text')->value('content');
-            $content = strip_tags($content);
-
-            $change = [
-                'zh' => 'zh-CN',
-                'zh-cn' => 'zh-CN',
-                'zh-tw' => 'zh-TW',
-                'jp'    => 'ja',
-                'en-us' => 'en',
-                'en-US' => 'en'
-            ];
-            if (isset($change[$language_code])) {
-                $language_code = $change[$language_code];
-            }
+            //谷歌翻译
+            $content = google_translate($content, $language_code);
+            return $this->success( ['content' => $content]);
             
             
-            if (!empty($content)) {
-                $translate = new TranslateClient([
-                    'key' => getEnvValue('GOOGLE_KEY') //替换为你自己的API密钥
-                ]);
-                // 3. 执行翻译(目标语言指定为英文 en)
-                $result = $translate->translate($content, [
-                    'target' => $language_code, // 固定为 en 表示翻译成英文
-                ]);
-                if (!empty($result['text'])) {
-                    return $this->success( ['content' => $result['text']]);
-                }
-            }
         } catch (\Exception $e) {
         } catch (\Exception $e) {
             return $this->error('翻译失败:' . $e->getMessage());
             return $this->error('翻译失败:' . $e->getMessage());
         }
         }

+ 1 - 1
app/admin/validate/ConfigValidate.php

@@ -14,7 +14,7 @@ class ConfigValidate extends BaseValidate
     protected $rule = [
     protected $rule = [
         'id' => 'require',
         'id' => 'require',
         'field' => 'require|length:1,50',
         'field' => 'require|length:1,50',
-        'val' => 'require|length:0,2000',
+        'val' => 'length:0,2000',
         'remark' => 'length:0,100',
         'remark' => 'length:0,100',
         'weight' => 'integer',
         'weight' => 'integer',
         'flag' => 'require|in:0,1,2,3,4',
         'flag' => 'require|in:0,1,2,3,4',

+ 35 - 0
app/common.php

@@ -4,6 +4,8 @@ use SingKa\Sms\SkSms;
 use GatewayClient\Gateway;
 use GatewayClient\Gateway;
 use \utils\Str;
 use \utils\Str;
 use think\facade\Queue;
 use think\facade\Queue;
+use Google\Cloud\Translate\V2\TranslateClient;
+
 /**
 /**
  * 框架内部默认ajax返回
  * 框架内部默认ajax返回
  * @param string $msg      提示信息
  * @param string $msg      提示信息
@@ -59,6 +61,39 @@ function ret($code, $msg = "",$data = [],$count=0, $page=0)
     return json($ret);
     return json($ret);
 }
 }
 
 
+/**
+ * 谷歌翻译
+ */
+function google_translate($content,$language_code='zh-CN'){
+    $content = strip_tags($content);
+
+    $change = [
+        'zh' => 'zh-CN',
+        'zh-cn' => 'zh-CN',
+        'zh-tw' => 'zh-TW',
+        'jp'    => 'ja',
+        'en-us' => 'en',
+        'en-US' => 'en'
+    ];
+    if (isset($change[$language_code])) {
+        $language_code = $change[$language_code];
+    }
+            
+    if (!empty($content)) {
+        $translate = new TranslateClient([
+            'key' => getEnvValue('GOOGLE_KEY') //替换为你自己的API密钥
+        ]);
+        // 3. 执行翻译(目标语言指定为英文 en)
+        $result = $translate->translate($content, [
+            'target' => $language_code, // 固定为 en 表示翻译成英文
+        ]);
+        if (!empty($result['text'])) {
+            return $result['text'];
+        }
+    }
+    return '';
+}
+
 /**
 /**
  * 手动解析 .env 文件,避免系统变量覆盖/TP版本兼容问题
  * 手动解析 .env 文件,避免系统变量覆盖/TP版本兼容问题
  * @param string $envFilePath .env文件绝对路径
  * @param string $envFilePath .env文件绝对路径

+ 1 - 0
app/common/controller/User.php

@@ -114,6 +114,7 @@ class User
                 'last_login_ip'=>$this->request->ip(),
                 'last_login_ip'=>$this->request->ip(),
                 'login_count'=>Db::raw('login_count+1'),
                 'login_count'=>Db::raw('login_count+1'),
                 'avatar' => !empty($params['avatar']) ? $params['avatar'] : '',
                 'avatar' => !empty($params['avatar']) ? $params['avatar'] : '',
+                'language_code' => $this->lang,
             ];
             ];
             if (!empty($params['realname'])) {
             if (!empty($params['realname'])) {
                 $update['realname'] = $params['realname'];
                 $update['realname'] = $params['realname'];

+ 11 - 0
app/enterprise/controller/Im.php

@@ -326,6 +326,17 @@ class Im extends BaseController
         $param = $this->request->param();
         $param = $this->request->param();
         $param['user_id'] = $this->userInfo['user_id'];
         $param['user_id'] = $this->userInfo['user_id'];
         $param['language_code'] = $this->lang;
         $param['language_code'] = $this->lang;
+        if ($this->userInfo['role'] != 0 && $param['type'] == 'text') {
+            //客服或管理员给用户发送消息,需要按照用户的语言做翻译
+            $toContactId = $param['to_contact_id'];
+            $toUser = User::where('user_id', $toContactId)->field(['role', 'language_code'])->find();
+            if ($toUser && $toUser['role'] == 0 && $toUser['language_code']) {
+                //谷歌翻译
+                $param['translate_content'] = google_translate($param['content'], $toUser['language_code']);
+                $param['language_code'] = $toUser['language_code'];
+            }
+        }
+        $param['language_code'] = $this->lang;
         $message=new Message();
         $message=new Message();
         $data = $message->sendMessage($param,$this->globalConfig);
         $data = $message->sendMessage($param,$this->globalConfig);
         if ($data) {
         if ($data) {

+ 4 - 0
app/enterprise/model/Message.php

@@ -268,6 +268,8 @@ class Message extends BaseModel
             'at'=>$at,
             'at'=>$at,
             'pid'=>$param['pid'] ?? 0,
             'pid'=>$param['pid'] ?? 0,
             'extends'=>($param['extends'] ?? null) ? $param['extends'] : null,
             'extends'=>($param['extends'] ?? null) ? $param['extends'] : null,
+            'translate_content' => $param['translate_content'] ?? null,
+            'language_code' => $param['language_code'] ?? '',
         ];
         ];
         $message=new self();
         $message=new self();
         $message->update(['is_last'=>0],['chat_identify'=>$chat_identify]);
         $message->update(['is_last'=>0],['chat_identify'=>$chat_identify]);
@@ -284,6 +286,8 @@ class Message extends BaseModel
         $sendData['to_user']=(string)$toContactId;
         $sendData['to_user']=(string)$toContactId;
         $sendData['role']=$manage[self::$uid] ?? 3;
         $sendData['role']=$manage[self::$uid] ?? 3;
         $sendData['sendTime']=(int)$sendData['sendTime'];
         $sendData['sendTime']=(int)$sendData['sendTime'];
+        $sendData['translate_content'] = $param['translate_content'] ?? '';
+        
         //这里单聊中发送对方的消息,对方是接受状态,自己是对方的联系人,要把发送对象设置为发送者的ID。
         //这里单聊中发送对方的消息,对方是接受状态,自己是对方的联系人,要把发送对象设置为发送者的ID。
         if($is_group){
         if($is_group){
             $sendData['toContactId']=$param['toContactId'];
             $sendData['toContactId']=$param['toContactId'];