// The response from the TranslateAsync call is a TranslationResponse // This contains a collection of TranslationSets, and the original query string private static void SuccessfulQuery(TranslationResponse response) { Console.WriteLine("Found {0} results:", response.Translations.Count()); var i = 0; // Each TranslationSet contains an original phrase, which indicates the sense // This is followed by a list of possible translations in that context foreach(var set in response.Translations) { Console.WriteLine("Result #{0}: original sense is \"{1}\" ({2})", ++i, set.Original.Sense, set.Original.PartOfSpeech); Console.WriteLine(); foreach(var translation in set.Translations) Console.WriteLine(string.Format("\t{0}", translation.Term)); Console.WriteLine(); } Console.WriteLine(); Console.WriteLine(); }
public async Task<TranslationResponse> TranslateAsync(string word) { var raw = await m_client.DownloadStringTaskAsync(GetUri(word)); var obj = JObject.Parse(raw); var error = obj["Error"]; if(error != null && error.Value<string>() == "UnsupportedDictionary") throw new NotSupportedException(string.Format("The specified dictionary, {0}, is not available via the WordReference API.", m_lookup)); var response = new TranslationResponse { Query = word }; var list = new List<TranslationSet>(); foreach(var pair in obj) { var key = pair.Key; // TODO: Add support for compounds etc if(!key.Contains("term")) continue; foreach(var cat in pair.Value) { var catProp = cat as JProperty; if(!Categories.Contains(catProp.Name)) continue; foreach(var index in cat.Children().Children()) { var set = new TranslationSet(); list.Add(set); var translationList = new List<Phrase>(); foreach(var translation in index.Children().Children()) { var translationProp = translation as JProperty; switch(translationProp.Name) { case "Note": continue; case "OriginalTerm": set.Original = ParseWord(translationProp); break; default: translationList.Add(ParseWord(translationProp)); break; } } set.Translations = translationList; } } } response.Translations = list; return response; }