[Day 15] Google Translation - 2
Published:
Joseph
昨天玩完了Demo,按照步調今天就用Code來實踐吧。在下筆的時候Client Library有v2
、v3beta1
兩個版本,但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()
client, err := translate.NewClient(ctx) if err != nil { log.Fatalf("Failed to create client: %v", err) }
target, err := language.Parse("zh-TW") if err != nil { log.Fatalf("Failed to parse target language: %v", err) }
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,好今天就到這邊,謝謝大家的觀看。