阿里云翻译代码
2024-04-18




    private function doTrans($text){
        try {
            if (strlen($text) > 5000) {
                $max_len = strlen($text) ;
                $len = 0;
                $res = '';
                while ($len < $max_len  ){
                    $res .= $this->transText(substr($text,$len,5000));
                    $len = $len + 5000;
                }
            } else {
                $res = $this->transText($text);
            }
        }catch (\Throwable $e)   {
            $res = false;
        }
        return $res;
    }
    private function transText($text){
        require_once dirname(dirname(__DIR__)).'/ali/vendor/autoload.php';
        $rt = '';
        $config = new \Darabonba\OpenApi\Models\Config([
            // 必填,您的 AccessKey ID
            "accessKeyId" => 'xxxxxx',
            // 必填,您的 AccessKey Secret
            "accessKeySecret" => 'xxxxxx'
        ]);
        // Endpoint 请参考 https://api.aliyun.com/product/alimt
        $config->endpoint = "mt.aliyuncs.com";
        $client =  new \AlibabaCloud\SDK\Alimt\V20181012\Alimt($config);
        $translateGeneralRequest = new \AlibabaCloud\SDK\Alimt\V20181012\Models\TranslateGeneralRequest([
            "formatType" => "text",
            "sourceLanguage" => "id",
            "targetLanguage" => "zh",
            "sourceText" => $text,
            "scene" => "general",
            "context" => ""
        ]);
        $runtime = new \AlibabaCloud\Tea\Utils\Utils\RuntimeOptions([]);
        try {
            // 复制代码运行请自行打印 API 的返回值
            $res = $client->translateGeneralWithOptions($translateGeneralRequest, $runtime);
            if($res->statusCode == 200){
                if($res->body->data->translated){
                    $rt =  $res->body->data->translated;
                }
            }
        }
        catch (\Exception $error) {
//            var_dump($error->getMessage().$error->getFile().$error->getLine());
            ref_log_error(0,'翻译异常',$error->getMessage().$error->getFile().$error->getLine());
        }
        return $rt;
    }