Здравствуйте) Вот собственно делал программу - переводчик. Которая хранит данные в xml файле. В голову пришла идея вставить в программу возможность програмно подключаться к гугл-переводчику и получать перевод слова. В интернете нашел интерестное решение В принципе в ниже приведенной функции мне понятно почти все кроме того где и как мы узнали строку requestUri???Помогите разобраться.
| Код | // so we don't need to send a format? key string requestUri = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + _en_Word + "&langpair=" + "en" + "%7C"+"ru";
|
вот функция, реализующая подключение и внесение переведенного слова с английского на русский в поле textbox:
| Код | private void set_conection(TextBox output) {
// make sure that the passed string is not empty or null if (!String.IsNullOrEmpty(_en_Word)) { // per Google's terms of use, we can only translate // a string of up to 5000 characters long if (_en_Word.Length <= 5000) { const int bufSizeMax = 65536; const int bufSizeMin = 8192;
try { // by default format? is text. // so we don't need to send a format? key string requestUri = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + _en_Word + "&langpair=" + "en" + "%7C"+"ru";
// execute the request and get the response stream HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream();
// get the length of the content returned by the request int length = (int)response.ContentLength; int bufSize = bufSizeMin;
if (length > bufSize) bufSize = length > bufSizeMax ? bufSizeMax : length;
// allocate buffer and StringBuilder for reading response byte[] buf = new byte[bufSize]; StringBuilder sb = new StringBuilder(bufSize);
// read the whole response while ((length = responseStream.Read(buf, 0, buf.Length)) != 0) { sb.Append(Encoding.UTF8.GetString(buf, 0, length)); }
// the format of the response is like this // {"responseData": {"translatedText":"¿Cómo estás?"}, "responseDetails": null, "responseStatus": 200} // so now let's clean up the response by manipulating the string string translatedText = sb.Remove(0, 36).ToString(); translatedText = translatedText.Substring(0, translatedText.IndexOf("\"},"));
output.Text= translatedText; } catch { output.Text= "Cannot get the translation. Please try again later."; } } else { output.Text= "String to translate must be less than 5000 characters long."; } } else { output.Text= "failed"; } }
|
|