// Yet another command-line client for SimplyTranslate // All Rites Reversed (ΔΈ) 3188 Aoi Koizumi, Czar of KST, mutefall, shokara, Baobab 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 { log.Printf("Text to translate is required. \n") os.Exit(1) } else if len(toLang) == 0 { log.Printf("Target language is missing. \n") os.Exit(1) } var queryURL = instanceURL + "?engine=" + engine + "&from=" + fromLang + "&to=" + toLang + "&text=" + text req, err1 := http.Get(queryURL) var o TranslateAPI if err1 != nil { log.Printf("Couldn't process request %s\n", err1) } defer req.Body.Close() resp, err2 := io.ReadAll(req.Body) if err2 != nil { log.Printf("Couldn't process response %s\n", err2) } _ = json.Unmarshal([]byte(resp), &o) fmt.Printf("Input: %s (%s)\n",text,fromLang) fmt.Printf("Output: %s (%s)\n",o.OutText,toLang) }