[Day 15] Google Translation - 2

昨天玩完了Demo,按照步調今天就用Code來實踐吧。在下筆的時候Client Library有v2v3beta1兩個版本,但Golang只有v2的Example,需要的話就只能用Golang執行CURL POST去呼叫v3beta1版API,所以我這邊就先使用v2來試試看。

#

架構一樣是在modules底下建立一個translation.go的module
還有要記得抓credential json下來,可以參考這系列第三天的文章

我們直接來看看translation.go裡面有什麼吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package translation

import (
"context"
"fmt"
"log"

"cloud.google.com/go/translate"
"golang.org/x/text/language"
)

func TranslateText(text string) error {
ctx := context.Background()

// Creates a client.
client, err := translate.NewClient(ctx)
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}

// Sets the target language.
target, err := language.Parse("zh-TW")
if err != nil {
log.Fatalf("Failed to parse target language: %v", err)
}

// Translates the text into Russian.
translations, err := client.Translate(ctx, []string{text, text}, target, nil)
if err != nil {
log.Fatalf("Failed to translate text: %v", err)
}

fmt.Printf("Text: %v\n", text)
fmt.Printf("Translations: %+v\n", translations)
fmt.Printf("Translation[0]: %v\n", translations[0].Text)

return nil
}

Language Support可以參考這裡:https://cloud.google.com/translate/docs/languages

這邊我特地做了個小實驗,client.Translate(ctx, []string{text, text}, target, nil)我傳入了兩個text,然後再後面看看translations出來會不會一次有兩個。結果呢….

output:

1
2
3
Text: Hello World
Translations: [{Text:你好,世界 Source:en Model:} {Text:你好,世界 Source:en Model:}]
Translation[0]: 你好,世界

恩,看來可以一次傳入多個需要翻譯的文字,會減少很多次API呼叫。
OK,好今天就到這邊,謝謝大家的觀看。