translate.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package translate
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/volcengine/volc-sdk-golang/base"
  6. "net/http"
  7. "net/url"
  8. "strings"
  9. "time"
  10. )
  11. const (
  12. kAccessKey = "AKLTNGYwNTk3NGQzMDdmNDk5Njk0YjE5ZTBlMmZjYjgxNzM" // https://console.volcengine.com/iam/keymanage/
  13. kSecretKey = "Wm1Wa01UbGpOR0U0TW1FNU5ERXpaRGhqT1RRM1pEQm1PREZrTldNeU0yVQ=="
  14. kServiceVersion = "2020-06-01"
  15. )
  16. var (
  17. ServiceInfo = &base.ServiceInfo{
  18. Timeout: 5 * time.Second,
  19. Host: "translate.volcengineapi.com",
  20. Header: http.Header{
  21. "Accept": []string{"application/json"},
  22. },
  23. Credentials: base.Credentials{Region: base.RegionCnNorth1, Service: "translate"},
  24. }
  25. ApiInfoList = map[string]*base.ApiInfo{
  26. "TranslateText": {
  27. Method: http.MethodPost,
  28. Path: "/",
  29. Query: url.Values{
  30. "Action": []string{"TranslateText"},
  31. "Version": []string{kServiceVersion},
  32. },
  33. },
  34. }
  35. )
  36. type Req struct {
  37. SourceLanguage string `json:"SourceLanguage"`
  38. TargetLanguage string `json:"TargetLanguage"`
  39. TextList []string `json:"TextList"`
  40. }
  41. type Rsp struct {
  42. TranslationList []struct {
  43. Translation string `json:"Translation"`
  44. DetectedSourceLanguage string `json:"DetectedSourceLanguage"`
  45. } `json:"TranslationList"`
  46. ResponseMetadata struct {
  47. RequestId string `json:"RequestId"`
  48. Action string `json:"Action"`
  49. Version string `json:"Version"`
  50. Service string `json:"Service"`
  51. Region string `json:"Region"`
  52. Error struct {
  53. Code string `json:"Code"`
  54. Message string `json:"Message"`
  55. } `json:"Error"`
  56. } `json:"ResponseMetadata"`
  57. }
  58. func Translate(zhStr string) (enStr string, err error) {
  59. client := base.NewClient(ServiceInfo, ApiInfoList)
  60. client.SetAccessKey(kAccessKey)
  61. client.SetSecretKey(kSecretKey)
  62. req := Req{
  63. SourceLanguage: "zh",
  64. TargetLanguage: "en",
  65. TextList: []string{zhStr},
  66. }
  67. body, _ := json.Marshal(req)
  68. resp, code, err := client.Json("TranslateText", nil, string(body))
  69. if err != nil {
  70. return enStr, err
  71. }
  72. fmt.Printf("%d %s\n", code, string(resp))
  73. var rsp Rsp
  74. err = json.Unmarshal(resp, &rsp)
  75. if err != nil {
  76. return enStr, err
  77. }
  78. return strings.ToLower(rsp.TranslationList[0].Translation), nil
  79. }