package translate import ( "encoding/json" "fmt" "github.com/volcengine/volc-sdk-golang/base" "net/http" "net/url" "strings" "time" ) const ( kAccessKey = "AKLTNGYwNTk3NGQzMDdmNDk5Njk0YjE5ZTBlMmZjYjgxNzM" // https://console.volcengine.com/iam/keymanage/ kSecretKey = "Wm1Wa01UbGpOR0U0TW1FNU5ERXpaRGhqT1RRM1pEQm1PREZrTldNeU0yVQ==" kServiceVersion = "2020-06-01" ) var ( ServiceInfo = &base.ServiceInfo{ Timeout: 5 * time.Second, Host: "translate.volcengineapi.com", Header: http.Header{ "Accept": []string{"application/json"}, }, Credentials: base.Credentials{Region: base.RegionCnNorth1, Service: "translate"}, } ApiInfoList = map[string]*base.ApiInfo{ "TranslateText": { Method: http.MethodPost, Path: "/", Query: url.Values{ "Action": []string{"TranslateText"}, "Version": []string{kServiceVersion}, }, }, } ) type Req struct { SourceLanguage string `json:"SourceLanguage"` TargetLanguage string `json:"TargetLanguage"` TextList []string `json:"TextList"` } type Rsp struct { TranslationList []struct { Translation string `json:"Translation"` DetectedSourceLanguage string `json:"DetectedSourceLanguage"` } `json:"TranslationList"` ResponseMetadata struct { RequestId string `json:"RequestId"` Action string `json:"Action"` Version string `json:"Version"` Service string `json:"Service"` Region string `json:"Region"` Error struct { Code string `json:"Code"` Message string `json:"Message"` } `json:"Error"` } `json:"ResponseMetadata"` } func Translate(zhStr string) (enStr string, err error) { client := base.NewClient(ServiceInfo, ApiInfoList) client.SetAccessKey(kAccessKey) client.SetSecretKey(kSecretKey) req := Req{ SourceLanguage: "zh", TargetLanguage: "en", TextList: []string{zhStr}, } body, _ := json.Marshal(req) resp, code, err := client.Json("TranslateText", nil, string(body)) if err != nil { return enStr, err } fmt.Printf("%d %s\n", code, string(resp)) var rsp Rsp err = json.Unmarshal(resp, &rsp) if err != nil { return enStr, err } return strings.ToLower(rsp.TranslationList[0].Translation), nil }