...
1
2
3
4
5
6
7 package mock
8
9 import (
10 "context"
11 "fmt"
12 "log"
13 "os"
14
15 "google.golang.org/api/option"
16 "google.golang.org/api/translate/v3"
17 )
18
19
20
21 type TranslateService interface {
22 TranslateText(text, language string) (string, error)
23 }
24
25
26
27 func TranslateTextHighLevel(service TranslateService, text, language string) (string, error) {
28 return service.TranslateText(text, language)
29 }
30
31 type translateService struct {
32 svc *translate.Service
33 }
34
35
36 func NewTranslateService(ctx context.Context, opts ...option.ClientOption) TranslateService {
37 svc, err := translate.NewService(ctx, opts...)
38 if err != nil {
39 log.Fatalf("unable to create translate service, shutting down: %v", err)
40 }
41 return &translateService{svc}
42 }
43
44 func (t *translateService) TranslateText(text, language string) (string, error) {
45 parent := fmt.Sprintf("projects/%s/locations/global", os.Getenv("GOOGLE_CLOUD_PROJECT"))
46 resp, err := t.svc.Projects.Locations.TranslateText(parent, &translate.TranslateTextRequest{
47 TargetLanguageCode: language,
48 Contents: []string{text},
49 }).Do()
50 if err != nil {
51 return "", fmt.Errorf("unable to translate text: %v", err)
52 }
53 return resp.Translations[0].TranslatedText, nil
54 }
55
View as plain text