// Suggest returns a slice of suggestions for a request. // glosbe returns suggestions only for the source locale. func Suggest(req data.SuggestionReq) (*[]data.Suggestion, error) { resp, err := req.FromCache() if err == nil { return resp, nil } source, err := gtranslate.Detect(req) if err != nil { return nil, err } source = req.NormalizeLocale(source) target := req.TargetLocale(source) query, err := makeSuggestQuery(req.Query, source, target) if err != nil { return nil, err } rawData, err := httputils.Get(query) if err != nil { return nil, err } resp, err = parseSuggestResp(rawData, source) if err != nil { return nil, err } if cacheErr := req.SaveCache(resp); cacheErr != nil { log.Println(cacheErr) } return resp, nil }