#include "GoogleTranslator.h" // Public methods GoogleTranslator::GoogleTranslator(){ isTranslated = false; translatedText = ""; formatedText = ""; correctionText = ""; useProxy = false; proxyHTTPAddress = ""; proxyHTTPPort = 0; languageFrom = "en"; languageTo = "fr"; correctedText = ""; } bool GoogleTranslator::sendHttpGet(String& url, String& post, String& result_text, Gate2 _progress){ // Proxy refreshProxy(); httpClient.URL(url+"&"+post); //httpClient.Agent("Mozilla/5.0"); httpClient.TimeoutMsecs(5000); httpClient.Get(); bool status = true; result_text = httpClient.ExecuteRedirect(HttpClient::DEFAULT_MAX_REDIRECT, HttpClient::DEFAULT_RETRIES, _progress); if (!IsNull(httpClient.GetError())||httpClient.IsAborted()){ status = false; result_text = String("Error:").Cat()< _progress){ // Proxy refreshProxy(); httpClient.URL(url); //httpClient.Agent("Mozilla/5.0"); httpClient.TimeoutMsecs(5000); httpClient.Post(); httpClient.PostData(post); bool status = true; result_text = httpClient.ExecuteRedirect(HttpClient::DEFAULT_MAX_REDIRECT, HttpClient::DEFAULT_RETRIES, _progress); if (!IsNull(httpClient.GetError())||httpClient.IsAborted()){ status = false; result_text = String("Error:").Cat()< _progress){ //String url = "http://translate.google.com/translate_a/t?client=t"; // till 18.11.2009 was: String url = "www.google.com/translate_a/t?client=t"; //or //String url = "http://translate.google.com/translate_t?"; url << String("&sl=") << languageFrom << String("&tl=") << languageTo; // or //url << String("&langpair=") << languageFrom << String("|") << languageTo; url << String("&ie=utf-8&oe=utf-8"); String post = String("text=") + UrlEncode(sourceText); isTranslated = sendHttpPost(url, post, translatedText, _progress); // or //isTranslated = sendHttpPost(url, post, translatedText, _progress); // Empty other properties formatedText = ""; correctionText = ""; correctedText = ""; return isTranslated; } //... need to finish this procedure and test it // gtrans=&hl=&langpair=|&oe=UTF-8&text=&utrans= // need to test "&hl=ru" if noun, adjective,... is returned in speciffic language bool GoogleTranslator::SetCorrectionText(String correction_text, String& result_text, Gate2 _progress){ if(!isTranslated) return false; String url = "http://translate.google.com/translate_suggestion?"; //or //? not sure //String url = "http://www.google.com/translate_a/t?client=t"; url << String("&sl=") << languageFrom << String("&tl=") << languageTo; // or //url << String("&langpair=") << languageFrom << String("|") << languageTo; url << String("&ie=utf-8&oe=utf-8"); url << String("&hl=") << languageTo; url << String("&text=") << UrlEncode(sourceText); url << String(">rans=") << UrlEncode(correctionText); String post = String("utrans=") + UrlEncode(correction_text); bool status = sendHttpPost(url, post, result_text, _progress); if(status) correctedText = correction_text; return status; } String GoogleTranslator::GetFormatedText(){ if(!isTranslated) return formatedText; // if not translated it is null or have error message if(formatedText.GetCount()>0) return formatedText; // Common formatting translatedText = replace_string ( translatedText, String("\\r\\n").Cat(), String("\n").Cat()); //translatedText = replace_string ( translatedText, String("\\r\\n ").Cat(), String("\n").Cat()); translatedText = replace_string ( translatedText, String("\\\"").Cat(), String("\"").Cat()); translatedText = replace_string ( translatedText, String("\\\\").Cat(), String("\\").Cat()); translatedText = replace_string ( translatedText, String("\\n").Cat(), String("\n").Cat()); translatedText = replace_string ( translatedText, String("\\x3c").Cat(), String("<").Cat()); translatedText = replace_string ( translatedText, String("\\x3e").Cat(), String(">").Cat()); if(translatedText.StartsWith("\"")){// is string formatedText = translatedText; formatedText.Remove(0, 1); formatedText.Remove(formatedText.GetLength()-1, 1); // Set Correction text correctionText = formatedText; } else if (translatedText.StartsWith("[\"")){ // is terms String text_temp = translatedText, text_lf = String("\n"); // For debugging //String original_text = translatedText; int text_temp_pos, text_temp_pos1; text_temp_pos = 2; // Get first word text_temp_pos1 = text_temp.Find("\"", text_temp_pos); if(text_temp_pos1==-1) text_temp_pos1 = text_temp.GetLength(); formatedText = text_temp.Mid(text_temp_pos,text_temp_pos1 - text_temp_pos); // Set first term as text for correction correctionText = formatedText; text_temp_pos = text_temp_pos1+1; formatedText<1){ formatedText<text_temp_pos1)) text_temp_pos2 = text_temp_pos1; formatedText<0) formatedText<text_temp_pos){ curr_tab = text_tab; formatedText<text_temp_pos2)||(text_temp_pos1==-1)) text_temp_pos1 = text_temp_pos2; formatedText<