package main import ( "encoding/json" "flag" "fmt" "io" "log" "net/http" "os" ) var ( instanceURL string engine string fromLang string toLang string text string ) type TranslateAPI struct { OutText string `json:"translated-text"` } func init() { flag.StringVar(&instanceURL, "i", "https://translate.bus-hit.me/api/translate/", "Instance for SimplyTranslate (default: https://translate.bus-hit.me)") flag.StringVar(&engine, "e", "google", "Translation engine (default: google)") flag.StringVar(&fromLang, "f", "auto", "Source language (default: auto)") flag.StringVar(&toLang, "t", "", "Target language (default: unset)") flag.StringVar(&text, "T", "", "Text to translate (default: unset)") } func main() { flag.Parse() if len(text) == 0 || len(toLang) == 0 { log.Fatal("Missing either the text or the target language.") os.Exit(1) } var o TranslateAPI var queryURL = instanceURL + "?engine=" + engine + "&from=" + fromLang + "&to=" + toLang + "&text=" + text req, err := http.Get(queryURL) sanityCheck(err) defer req.Body.Close() resp, err := io.ReadAll(req.Body) _ = json.Unmarshal([]byte(resp), &o) sanityCheck(err) fmt.Printf("Input: %s (%s)\n",text,fromLang) fmt.Printf("Output: %s (%s)\n",o.OutText,toLang) } func sanityCheck(err error) { if err != nil { log.Fatal(err) } }