protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://openthesaurus.caixamagica.pt/suggestions.php?word={0}&search=1"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase, encoding) ); result.ArticleUrl = query; result.ArticleUrlCaption = phrase; WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet, encoding); string responseFromServer = helper.GetResponse(); string[] translations = StringParser.ParseItemsList("<li>", "</li>", responseFromServer); if(translations.Length == 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } string subtranslation; foreach(string translation in translations) { subtranslation = StringParser.RemoveAll("<", ">", translation); result.Translations.Add(subtranslation); } }
public bool Edit(IWin32Window owner, ITranslationProvider translationProvider, LanguagePair[] languagePairs, ITranslationProviderCredentialStore credentialStore) { var controlledMTProvider = (ControlledMtProvidersProvider)translationProvider; List<ITranslationProvider> mtProviders = new List<ITranslationProvider>(); //move this to mmtProvider using (MTProvidersDialog pd = new MTProvidersDialog(controlledMTProvider)) { DialogResult result = pd.ShowDialog(owner); if (result != DialogResult.OK) { return false; } var mtProvidersUi = pd.SelectedTranslationProvidersWinformsUI; if (mtProvidersUi.Count == 0) return false; foreach (var mtProviderUi in mtProvidersUi) { var innerProviders = mtProviderUi.Browse(owner, languagePairs, credentialStore); if (innerProviders != null && innerProviders.All(x => x.TranslationMethod == TranslationMethod.MachineTranslation)) { mtProviders.AddRange(innerProviders); } } } controlledMTProvider.MtProviders = mtProviders; return true; }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://openthes-es.berlios.de/multimatch.php?word={0}&search=1"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase, encoding) ); result.ArticleUrl = query; result.ArticleUrlCaption = phrase; WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet, encoding); string responseFromServer = helper.GetResponse(); if(responseFromServer.Contains("<li>No matches</li>")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } OpenthesaurusDeDictionary.SetResult(result, responseFromServer); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string responseFromServer = UlifHelper.GetSynonymsPage(phrase, networkSetting); if(string.IsNullOrEmpty(responseFromServer)) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } responseFromServer = StringParser.Parse("<div class=\"p_cl\">", "</div>", responseFromServer); responseFromServer = StringParser.RemoveAll("<A ondblclick", ">", responseFromServer); responseFromServer = responseFromServer.Replace("</A>", ""); responseFromServer = responseFromServer.Replace("<B>", ""); responseFromServer = responseFromServer.Replace("</B>", ""); responseFromServer = responseFromServer.Replace("<I>", ""); responseFromServer = responseFromServer.Replace("</I>", ""); StringParser parser = new StringParser(responseFromServer); string[] translations = parser.ReadItemsList("<P>", "</P>", "3495783-4572385"); if(translations.Length == 1) { result.Translations.Add(translations[0]); } else { foreach(string subtranslation in translations) { Result subres = CreateNewResult("", languagesPair, subject); result.Childs.Add(subres); subres.Translations.Add(subtranslation); } } }
public static Result GetCachedResult(ServiceItem serviceItem, string phrase, LanguagePair languagesPair, string subject) { if(!useCache) return new Result(serviceItem, phrase, languagesPair, subject); string key = phrase.Trim().ToLowerInvariant(); if(key.Length > 500) key = key.Substring(0, 500); ResultsHashtable collection; bool collection_exists = true; lock(cache) { if(!cache.TryGetValue(key, out collection)) { collection = new ResultsHashtable(); cache.Add(key, collection); collection_exists = false; } } int hash = Result.GetHashCode(serviceItem.FullName, languagesPair, subject); bool needed_new_result = !collection_exists; Result res = null; lock(collection) { if(!needed_new_result) { if(!collection.TryGetValue(hash, out res)) needed_new_result = true; else { needed_new_result = (res.Error != null && !res.ResultNotFound) || res.Phrase != phrase; } } if(needed_new_result) { res = new Result(serviceItem, phrase, languagesPair, subject); collection[hash] = res; lock(results_history) { results_history.Add(res); } } else { res.LastUsed = DateTime.Now; lock(results_history) { results_history.Remove(res); results_history.Add(res); } } } return res; }
public ITranslationProvider[] Browse(IWin32Window owner, LanguagePair[] languagePairs, ITranslationProviderCredentialStore credentialStore) { List<ITranslationProvider> mtProviders = new List<ITranslationProvider>(); ControlledMtProvidersProvider controlledMTProvider = new ControlledMtProvidersProvider(); using (MTProvidersDialog pd = new MTProvidersDialog(controlledMTProvider)) { DialogResult result = pd.ShowDialog(owner); if(result != DialogResult.OK) { return null; } var mtProvidersUi = pd.SelectedTranslationProvidersWinformsUI; if (mtProvidersUi.Count == 0) return null; foreach (var mtProviderUi in mtProvidersUi) { var innerProviders = mtProviderUi.Browse(owner, languagePairs, credentialStore); if (innerProviders != null && innerProviders.All(x => x.TranslationMethod == TranslationMethod.MachineTranslation)) { mtProviders.AddRange(innerProviders); } } } return new ITranslationProvider[] { new ControlledMtProvidersProvider(mtProviders) }; }
public SettingsViewModel() { m_okCommand = new RelayCommand(Ok, CanOk); m_cancelCommand = new RelayCommand(Cancel); m_clearDatasheetsCacheCommand = new RelayCommand(ClearDatasheetsCache); m_clearImagesCacheCommand = new RelayCommand(ClearImagesCache); m_clearSavedDatasheetsCommand = new RelayCommand(ClearSavedDatasheets); m_checkUpdatesCommand = new RelayCommand(CheckUpdates); m_selectAppDataPathCommand = new RelayCommand(SelectAppDataPath); m_validators = new ValidatorCollection(() => m_okCommand.RaiseCanExecuteChanged()); m_maxCacheSize = new IntegerValidator(0, 100000); m_maxCacheSize.ValidValue = (int)(Global.Configuration.MaxDatasheetsCacheSize / (1024 * 1024)); m_validators.Add(m_maxCacheSize); LanguagePair pair = new LanguagePair(string.Empty); m_availableLanguages.Add(pair); m_selectedLanguage = pair; pair = new LanguagePair("en-US"); if (Global.Configuration.Language == pair.Name) m_selectedLanguage = pair; m_availableLanguages.Add(pair); foreach (var langPath in Directory.EnumerateFiles(Global.LanguagesDirectory)) { string[] tokens = Path.GetFileName(langPath).Split('.'); if (tokens.Length < 2) continue; pair = new LanguagePair(tokens[1]); m_availableLanguages.Add(pair); if (pair.Name == Global.Configuration.Language) m_selectedLanguage = pair; } m_initialPath = AppDataPath = Global.AppDataPath; m_favouritesOnStart = Global.Configuration.FavouritesOnStart; }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { lock(cookieContainer) { if(coockieTime < DateTime.Now.AddHours(-1)) { coockieTime = DateTime.Now; WebRequestHelper helper_cookie = new WebRequestHelper(result, new Uri("http://multiwordnet.itc.it/online/multiwordnet-head.php"), networkSetting, WebRequestContentType.UrlEncodedGet); helper_cookie.CookieContainer = cookieContainer; helper_cookie.GetResponse(); } } string query = "http://multiwordnet.itc.it/online/mwn-main.php?language={0}&field=word&word={1}&wntype=Overview&pos="; query = string.Format(query, ConvertLanguage(languagesPair.From), HttpUtility.UrlEncode(phrase)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); helper.CookieContainer = cookieContainer; string responseFromServer = helper.GetResponse(); if(responseFromServer.Contains("<b> No data found </b>")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } string table = StringParser.Parse("<table border=1 WIDTH=100% CELLPADDING=1 class=bgpos>", "</table>", responseFromServer); string[] nodes = StringParser.ParseItemsList("<tr>", "</tr>", table); string nodename, nodeval; Result child = result; foreach(string node in nodes) { if(node.Contains("<td class=bg_posbody COLSPAN=2 >")) { nodename = StringParser.RemoveAll("<", ">", node); child = new Result(result.ServiceItem, nodename, result.LanguagePair, result.Subject); result.Childs.Add(child); } else { nodeval = StringParser.RemoveAll("<", ">", node); child.Translations.Add(nodeval); } } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { List<string> words = StringParser.SplitToWords(phrase); foreach(string word in words) { TranslateWord(word, languagesPair, subject, result, networkSetting); } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { Encoding encoding = Encoding.GetEncoding("iso-8859-1"); string query = "http://wordnetweb.princeton.edu/perl/webwn?s=" + HttpUtility.UrlEncode(phrase, encoding); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet, encoding); string responseFromServer = helper.GetResponse(); if(responseFromServer.Contains("<h3>Your search did not return any results.</h3>")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } if(responseFromServer.Contains("<h3>Sorry(?) your search can only contain letters(?)")) { throw new TranslationException("Query contains extraneous symbols"); } result.ArticleUrl = query; result.ArticleUrlCaption = phrase; string[] nodes = StringParser.ParseItemsList("<h3>", "</ul>", responseFromServer); bool first = true; string nodename; Result child = result; string[] subnodes; string translation; foreach(string node in nodes) { nodename = StringParser.ExtractLeft("</h3>", node); if(first && nodes.Length == 1) { child.Abbreviation = nodename; } else { child = new Result(result.ServiceItem, nodename, result.LanguagePair, result.Subject); result.Childs.Add(child); } first = false; subnodes = StringParser.ParseItemsList("<li>", "</li>", node); foreach(string subnode in subnodes) { translation = StringParser.RemoveAll("<", ">", subnode); translation = StringParser.ExtractRight(")", translation); child.Translations.Add(translation); } } }
public MtTranslationProviderLanguageDirection(MtTranslationProvider provider, LanguagePair languages) { #region "Instantiate" _provider = provider; _languageDirection = languages; _options = _provider.Options; _visitor = new MtTranslationProviderElementVisitor(_options); #endregion }
/// <summary> /// A translate query. /// </summary> /// <param name="queryText">The text to translate</param> /// <param name="languagePair">The language pair of the translation.</param> public TranslateQuery(string queryText, LanguagePair languagePair) : base(queryText) { ServiceUrl = "http://ajax.googleapis.com/ajax/services/language/"; ServiceName = "translate"; this.InitQueryParameter<QueryLanguagePairParameter>(ref m_LanguagePair); this.InitQueryParameter<QueryTranslateResponseFormatParameter>(ref m_ResponseFormat); m_LanguagePair.Value = languagePair; }
public ITranslationProvider[] Browse(IWin32Window owner, LanguagePair[] languagePairs, ITranslationProviderCredentialStore credentialStore) { var translationProviders = FileBasedTranslationProviderUi.Browse(owner, languagePairs, credentialStore); var translationProvider = translationProviders[0]; using (var sourceConfigurationForm = new SourceTmConfiguration(translationProvider.Uri)) { sourceConfigurationForm.ShowDialog(); } return new ITranslationProvider[] {new AddSourceTmTranslationProvider(translationProvider)}; }
public ITranslationProvider[] Browse(IWin32Window owner, LanguagePair[] languagePairs, ITranslationProviderCredentialStore credentialStore) { //construct options to send to form MtTranslationOptions loadOptions = new MtTranslationOptions(); //get saved key if there is one and put it into options //get google credentials TranslationProviderCredential getCredGt = GetMyCredentials(credentialStore, "mtenhancedprovidergt:///"); if (getCredGt != null) { loadOptions.apiKey = getCredGt.Credential; loadOptions.persistGoogleKey = getCredGt.Persist; } //get microsoft credentials TranslationProviderCredential getCredMt = GetMyCredentials(credentialStore, "mtenhancedprovidermst:///"); if (getCredMt != null) { try { GenericCredentials creds = new GenericCredentials(getCredMt.Credential); //parse credential into username and password loadOptions.ClientID = creds.UserName; loadOptions.ClientSecret = creds.Password; loadOptions.persistMicrosoftCreds = getCredMt.Persist; } catch { } //swallow b/c it will just fail to fill in instead of crashing the whole program } //construct form MtProviderConfDialog dialog = new MtProviderConfDialog(loadOptions, credentialStore); //we are letting user delete creds but after testing it seems that it's ok if the individual credentials are null, b/c our method will re-add them to the credstore based on the uri if (dialog.ShowDialog(owner) == DialogResult.OK) { MtTranslationProvider testProvider = new MtTranslationProvider(dialog.Options); string apiKey = dialog.Options.apiKey; //we are setting credentials selectively based on the chosen provider to avoid saving the other if it is blank if (dialog.Options.SelectedProvider == MtTranslationOptions.ProviderType.GoogleTranslate) { //set google credential SetGoogleCredentials(credentialStore, apiKey, dialog.Options.persistGoogleKey); } else if (dialog.Options.SelectedProvider == MtTranslationOptions.ProviderType.MicrosoftTranslator) { //set mst cred GenericCredentials creds2 = new GenericCredentials(dialog.Options.ClientID, dialog.Options.ClientSecret); SetMstCredentials(credentialStore, creds2, dialog.Options.persistMicrosoftCreds); } return new ITranslationProvider[] { testProvider }; } return null; }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { if(string.IsNullOrEmpty(viewState)) { //emulate first access to site WebRequestHelper helpertop = new WebRequestHelper(result, new Uri("http://www.prolingoffice.com/page.aspx?l1=28"), networkSetting, WebRequestContentType.UrlEncodedGet, Encoding.GetEncoding(1251)); string responseFromServertop = helpertop.GetResponse(); viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServertop); eventValidation = StringParser.Parse("id=\"__EVENTVALIDATION\" value=\"", "\"", responseFromServertop); } WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://www.prolingoffice.com/page.aspx?l1=28"), networkSetting, WebRequestContentType.UrlEncoded, Encoding.GetEncoding(1251)); //query string langDirection = "RU"; if(languagesPair.From == Language.Ukrainian) langDirection = "UR"; //templ=%CD%E5%F2+%EF%E5%F0%E5%E2%EE%E4%E0& //__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={0}&_ctl1%3Asource={1} //&_ctl1%3Alng={2}&_ctl1%3AButton1=%CF%E5%F0%E5%E2%E5%F1%F2%E8& //_ctl1%3Aathbox=&_ctl1%3Amailbox=&_ctl1%3Aerr_f=&_ctl1%3Aadd_txt=& //_ctl1%3Acb_forum=on&LanguageH=RUS&__EVENTVALIDATION={3} string query = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={0}&_ctl1%3Asource={1}&_ctl1%3Alng={2}&_ctl1%3AButton1=%CF%E5%F0%E5%E2%E5%F1%F2%E8&_ctl1%3Aathbox=&_ctl1%3Amailbox=&_ctl1%3Aerr_f=&_ctl1%3Aadd_txt=&_ctl1%3Acb_forum=on&LanguageH=RUS&__EVENTVALIDATION={3}"; query = string.Format(query, HttpUtility.UrlEncode(viewState, helper.Encoding), HttpUtility.UrlEncode(phrase, helper.Encoding), langDirection, HttpUtility.UrlEncode(eventValidation, helper.Encoding)); helper.AddPostData(query); string responseFromServer = helper.GetResponse(); string translation = StringParser.Parse("onclickk=\"shword();\">", "</DIV>", responseFromServer); translation = translation.Replace("<font color=red>", ""); translation = translation.Replace("</font>", ""); result.Translations.Add(translation); viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServer); eventValidation = StringParser.Parse("id=\"__EVENTVALIDATION\" value=\"", "\"", responseFromServer); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { lock(viewState) { if(string.IsNullOrEmpty(viewState)) { //emulate first access to site WebRequestHelper helpertop = new WebRequestHelper(result, new Uri("http://www.online-translator.com/Default.aspx/Text"), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServertop = helpertop.GetResponse(); viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServertop); prevPage = StringParser.Parse("id=\"__PREVIOUSPAGE\" value=\"", "\"", responseFromServertop); } } WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://www.online-translator.com/Default.aspx/Text"), networkSetting, WebRequestContentType.UrlEncoded); //query lock(viewState) { //string query = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={0}&ctl00%24SiteContent%24ucTextTranslator%24tbFromAddr=&ctl00%24SiteContent%24ucTextTranslator%24tbToAddr=&ctl00%24SiteContent%24ucTextTranslator%24tbCCAddr=&ctl00%24SiteContent%24ucTextTranslator%24tbSubject=&ctl00%24SiteContent%24ucTextTranslator%24tbBody=&ctl00%24SiteContent%24ucTextTranslator%24templates={1}&ctl00%24SiteContent%24ucTextTranslator%24checkShowVariants=on&ctl00%24SiteContent%24ucTextTranslator%24dlTemplates=General&ctl00%24SiteContent%24ucTextTranslator%24sourceText={2}&resultText=&ctl00%24SiteContent%24ucTextTranslator%24dlDirections={3}&ctl00%24SiteContent%24ucTextTranslator%24bTranslate=Translate&ctl00%24tbEmail=&ctl00%24tbName=&ctl00%24tbComment=&ctl00%24pollDiv%24tbSiteLang=en"; string query = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={0}&ctl00%24SiteContent%24MA_trasnlform%24selected_tab=text&chLangs=true&ctl00%24SiteContent%24MA_trasnlform%24rblTemplates=General&ctl00%24SiteContent%24MA_trasnlform%24otherTemplatesInput={1}&ctl00%24SiteContent%24MA_trasnlform%24sourceText={2}&ctl00%24SiteContent%24MA_trasnlform%24sLang={3}&ctl00%24SiteContent%24MA_trasnlform%24rLang={4}&ctl00%24SiteContent%24MA_trasnlform%24bTranslate=Translate&ctl00%24SiteContent%24MA_trasnlform%24changedFieldToAddr=&ctl00%24SiteContent%24MA_trasnlform%24hiddenDir=&ctl00%24SiteContent%24MA_trasnlform%24hiddenTranid=&ctl00%24changedField=&__PREVIOUSPAGE={5}"; query = string.Format(query, HttpUtility.UrlEncode(viewState), PromtUtils.GetSubject(subject), HttpUtility.UrlEncode(phrase), PromtUtils.ConvertLanguage(languagesPair.From), PromtUtils.ConvertLanguage(languagesPair.To), prevPage); helper.AddPostData(query); } string responseFromServer = helper.GetResponse(); string translation = StringParser.Parse("class=\"send_win\">", "</textarea>", responseFromServer); result.Translations.Add(translation); lock(viewState) { viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServer); prevPage = StringParser.Parse("id=\"__PREVIOUSPAGE\" value=\"", "\"", responseFromServer); } }
public bool Edit(IWin32Window owner, ITranslationProvider translationProvider, LanguagePair[] languagePairs, ITranslationProviderCredentialStore credentialStore) { var tProvider = translationProvider as AddSourceTmTranslationProvider; bool result = false; if (tProvider != null) { result = FileBasedTranslationProviderUi.Edit(owner, tProvider.FileBasedTranslationProvider, languagePairs, credentialStore); } using (var sourceConfigurationForm = new SourceTmConfiguration(translationProvider.Uri)) { sourceConfigurationForm.ShowDialog(); } return result; }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://pere.org.ua/cgi-bin/pere.cgi"), networkSetting, WebRequestContentType.Multipart); helper.AddPostKey("lng", "uk-ua"); helper.AddPostKey("han", "text"); helper.AddPostKey("wht", "text"); helper.AddPostKey("cod", ConvertLangsPair(languagesPair)); helper.AddPostKey("par", "1"); helper.AddPostKey("txt", phrase); helper.AddPostKey("don", "Відправити запит"); string responseFromServer = helper.GetResponse(); result.Translations.Add(StringParser.Parse("<nopere><TEXTAREA ROWS=20 COLS=80>", "</TEXTAREA></nopere>", responseFromServer)); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://193.2.66.133:85/overview.php?search=1&word={0}"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase, encoding) ); result.ArticleUrl = query; result.ArticleUrlCaption = phrase; WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet, encoding); string responseFromServer = helper.GetResponse(); OpenthesaurusDeDictionary.SetResult(result, responseFromServer); }
internal AsyncTranslateState( LanguagePair languagePair, ReadOnlyServiceSettingCollection translatorsSettings, string phrase, AsyncOperation asyncOp, EventHandler<TranslateProgressChangedEventArgs> progressChangedHandler, EventHandler<TranslateCompletedEventArgs> translateCompletedHandler) { if(translatorsSettings == null) throw new ArgumentNullException("translatorsSettings"); this.phrase = phrase; this.asyncOperation = asyncOp; this.translatorsSettings = translatorsSettings; this.languagePair = languagePair; count = translatorsSettings.Count; ProgressChanged += progressChangedHandler; TranslateCompleted += translateCompletedHandler; }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://sa.dir.bg/cgi/sabig.cgi?word={0}&translate=Translate&encin=windows-1251&encout=windows-1251"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase, encoding)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); helper.Encoding = encoding; result.ArticleUrl = query; result.ArticleUrlCaption = phrase; string responseFromServer = helper.GetResponse(); string translation = StringParser.Parse("<TD valign=\"top\" width=\"95%\">", "</TD>", responseFromServer); translation = StringParser.RemoveAll("<font", "</font>", translation); translation = "html!<p>" + translation.Replace("<BR><BR>", "<BR>") + "</p>"; result.Translations.Add(translation); }
internal static void DoTranslate(IDictDServiceItem dictServiceItem, string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { ServiceItem si = dictServiceItem as ServiceItem; DictionaryClient dc = null; try { dc = DictDClientsPool.GetPooledClient(dictServiceItem.Urls); DefinitionCollection definitions = dc.GetDefinitions(phrase, si.Name); string translation; if(definitions != null && definitions.Count > 0) { foreach(Definition df in definitions) { translation = "html!<div style='width:{allowed_width}px;overflow:scroll;overflow-y:hidden;overflow-x:auto;'><pre>" + df.Description.Replace("\r\n", "<br />") + " </pre></div>"; result.Translations.Add(translation); } } else { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } } catch(DictionaryServerException e) { if(e.ErrorCode == 552) //No definitions found { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else throw; } finally { if(dc != null) DictDClientsPool.PushPooledClient(dc); } }
private string DoTranslate(LanguagePair langPair, string text, string format) { try { if (string.IsNullOrEmpty(ApiKey)) { throw new Exception(PluginResources.ApiConnectionGoogleNoKeyErrorMessage); } var sourceLang = GetLanguageCode(langPair.SourceCulture); //shorten the input localized langs into 2-digit where applicable var targetLang = string.Empty; if (langPair.TargetCulture.Name.Equals("fr-HT")) { targetLang = "ht"; } else { targetLang = GetLanguageCode(langPair.TargetCulture); } #region "Encoding" text = EncodeSpecialChars(text); //all strings should get this final check for characters that seem to break GT api #endregion //create the url for the translate request var url = string.Format("https://translation.googleapis.com/language/translate/v2?key={0}&q={1}&target={2}", ApiKey, text, targetLang); if (format != "") //add format if provided { url += "&format=" + format; } var result = ""; //this will take the result from the webclient using (var webClient = new WebClient()) { webClient.Encoding = Encoding.UTF8; try { result = webClient.DownloadString(url); //gets us the json data indicating supported source languages for this target } catch (WebException e) //will come back 400 bad request if there is a problem { Log.Logger.Error($"{_constants.DoTranslate} {e.Message}\n { e.StackTrace}"); string eReason = GetExceptionReason(e); //get our localized error message from the resources file string message = PluginResources.ApiConnectorGoogleAuthErrorMsg1 + Environment.NewLine + PluginResources.ApiConnectorGoogleAuthErrorMsg2; throw new Exception(eReason); } } //need to parse results and find key "translatedText" - there should be only one var returnedResult = ParseReturnedResults(result, "translatedText")[0]; string decodedResult = HttpUtility.HtmlDecode(returnedResult); //google seems to send back html codes at times //for some reason, GT is sometimes adding zero-width spaces, aka "bom", aka char(8203) //so we need to remove it decodedResult = GtRemoveBoms(decodedResult); return(decodedResult); } catch (Exception ex) { Log.Logger.Error($"{_constants.DoTranslate} {ex.Message}\n { ex.StackTrace}"); throw new Exception(ex.Message); } }
/// <summary> /// Instantiates the variables and fills the list file content into /// a Dictionary collection object. /// </summary> /// <param name="provider"></param> /// <param name="languages"></param> public MtTranslationProviderLanguageDirection(MtTranslationProvider provider, LanguagePair languages) { _provider = provider; _languageDirection = languages; _options = _provider.Options; }
public ITranslationProviderLanguageDirection GetLanguageDirection(LanguagePair languageDirection) { return(new DeepLMtTranslationProviderLanguageDirection(this, languageDirection)); }
/// <summary> /// Instantiates the variables and fills the list file content into /// a Dictionary collection object. /// </summary> /// <param name="provider"></param> /// <param name="languages"></param> #region "ListTranslationProviderLanguageDirection" public MtTranslationProviderLanguageDirection(MtTranslationProvider provider, LanguagePair languages) { #region "Instantiate" _provider = provider; _languageDirection = languages; _options = _provider.Options; #endregion }
/// <summary> /// Creates a package model /// </summary> /// <param name="pathToTempFolder"></param> /// <returns></returns> private async Task <PackageModel> CreateModel(string pathToTempFolder) { var model = new PackageModel(); try { CultureInfo sourceLanguage = null; var languagePairList = new List <LanguagePair>(); if (_pluginDictionary.ContainsKey("Admin")) { var propertiesDictionary = _pluginDictionary["Admin"]; foreach (var item in propertiesDictionary) { if (item.Key == "ProjectName") { model.Name = item.Value; } } } if (_pluginDictionary.ContainsKey("Languages")) { var propertiesDictionary = _pluginDictionary["Languages"]; foreach (var item in propertiesDictionary) { if (item.Key == "SourceLanguage") { var sourceLanguageCode = int.Parse(item.Value); sourceLanguage = Language(sourceLanguageCode); } if (item.Key == "TargetLanguages") { //we assume languages code are separated by " " var languages = item.Value.Split(LanguageTargetSeparator); foreach (var language in languages) { var targetLanguageCode = int.Parse(language); var cultureInfo = Language(targetLanguageCode); var pair = new LanguagePair { SourceLanguage = sourceLanguage, TargetLanguage = cultureInfo }; languagePairList.Add(pair); } } } } model.LanguagePairs = languagePairList; if (model.LanguagePairs.Count > 0) { //for source var sourceFilesAndTmsPath = GetFilesAndTmsFromTempFolder(pathToTempFolder, sourceLanguage); var filesAndMetadata = ReturnSourceFilesNameAndMetadata(sourceFilesAndTmsPath); //for target foreach (var languagePair in model.LanguagePairs) { var targetFilesAndTmsPath = GetFilesAndTmsFromTempFolder(pathToTempFolder, languagePair.TargetLanguage); AddFilesAndTmsToModel(languagePair, filesAndMetadata, targetFilesAndTmsPath); } } } catch (Exception ex) { Log.Logger.Error($"CreateModel method: {ex.Message}\n {ex.StackTrace}"); } return(model); }
/// <summary> /// Determines the language direction of the delimited list file by /// reading the first line. Based upon this information it is determined /// whether the plug-in supports the language pair that was selected by /// the user. /// </summary> #region "SupportsLanguageDirection" public bool SupportsLanguageDirection(LanguagePair languageDirection) { //for now just... return(true); }
public BeGlobalLanguageDirection(BeGlobalTranslationProvider beGlobalTranslationProvider, LanguagePair languageDirection) { _beGlobalTranslationProvider = beGlobalTranslationProvider; _languageDirection = languageDirection; _options = beGlobalTranslationProvider.Options; _normalizeSourceTextHelper = new NormalizeSourceTextHelper(); _translationUnits = new List <TranslationUnit>(); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { //http://www.urduword.com/search.php?English=test string query = "http://www.urduword.com/search.php?English={0}"; if(languagesPair.From == Language.Urdu) query = "http://www.urduword.com/search.php?Roman={0}"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServer = helper.GetResponse(); if(responseFromServer.Contains("<p>Could not find translation for <b>")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { if(responseFromServer.Contains("<table border=\"0\" width=\"100%\" align=\"center\" cellpadding=\"3\" cellspacing=\"0\" >")) { result.ArticleUrl = query; result.ArticleUrlCaption = phrase; string translation = StringParser.Parse("<table border=\"0\" width=\"100%\" align=\"center\" cellpadding=\"3\" cellspacing=\"0\" >", "</table>", responseFromServer); StringParser parser = new StringParser(translation); string[] translations = parser.ReadItemsList("<tr>", "</tr>"); Result subres = null; foreach(string str in translations) { if(str.Contains("class=\"tablehead\"")) continue; string word = StringParser.Parse(">", "<", StringParser.Parse("<a", "/a>", str)); translation = StringParser.Parse("align=\"center\">", "<", str); if(languagesPair.From == Language.Urdu) { if(subres == null || subres.Phrase != translation) { subres = CreateNewResult(translation, languagesPair, subject); result.Childs.Add(subres); } } else { if(subres == null || subres.Phrase != word) { subres = CreateNewResult(word, languagesPair, subject); result.Childs.Add(subres); } } if(languagesPair.From == Language.Urdu) subres.Translations.Add(word); else subres.Translations.Add(translation); } } //more if(responseFromServer.Contains("page=2\">Next")) { query = "http://www.urduword.com/search.php?English={0}&page=2"; if(languagesPair.From == Language.Urdu) query = "http://www.urduword.com/search.php?Roman={0}&page=2"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase)); string link = "html!<p><a href=\"{0}\" title=\"{0}\">{1}</a></p>"; link = string.Format(link, query, "More ..."); Result subres = CreateNewResult(link, languagesPair, subject); result.Childs.Add(subres); } if(result.Childs.Count == 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } } }
public DeepLMtTranslationProviderLanguageDirection(DeepLMtTranslationProvider deepLMtTranslationProvider, LanguagePair languageDirection) { _deepLMtTranslationProvider = deepLMtTranslationProvider; _languageDirection = languageDirection; _options = deepLMtTranslationProvider.Options; _normalizeSourceTextHelper = new NormalizeSourceTextHelper(); }
void MsBrowserOpening(object sender, System.ComponentModel.CancelEventArgs e) { string selection = resBrowser.GetSelection(); if(string.IsNullOrEmpty(selection)) { miBrowserTranslateSel.Visible = false; miBrowserSep2.Visible = false; miSearchInGoogle.Visible = false; } else { selection = selection.Trim(); string small_selection = selection; if(small_selection.Length > 25) small_selection = small_selection.Substring(0, 25) + " ..."; miSearchInGoogle.Visible = true; miSearchInGoogle.Tag = selection; miBrowserTranslateSel.Visible = true; miBrowserSep2.Visible = true; miBrowserTranslateSel.Text = TranslateString("Translate") + " «" + small_selection + "»"; miBrowserTranslateSel.DropDownItems.Clear(); UserTranslateProfile upf = currentProfile as UserTranslateProfile; if(currentProfile == TranslateOptions.Instance.DefaultProfile || (upf != null && upf.ShowLanguages) ) { //add direct and reverted directions LanguagePair current_dir = languageSelector.Selection; ToolStripMenuItem mi; if(current_dir.To != current_dir.From) { LanguagePair inverted_dir = new LanguagePair(current_dir.To, current_dir.From); if(languageSelector.Languages.BinarySearch(inverted_dir) >=0 ) { mi = new ToolStripMenuItem(); miBrowserTranslateSel.DropDownItems.Add(mi); mi.Text = LangPack.TranslateLanguage(inverted_dir.From) + "->" + LangPack.TranslateLanguage(inverted_dir.To); mi.Tag = new MenuTranslateData(currentProfile, selection, inverted_dir); mi.Click += OnMenuTranslate; } } mi = new ToolStripMenuItem(); miBrowserTranslateSel.DropDownItems.Add(mi); mi.Text = LangPack.TranslateLanguage(current_dir.From) + "->" + LangPack.TranslateLanguage(current_dir.To); mi.Tag = new MenuTranslateData(currentProfile, selection, current_dir); mi.Click += OnMenuTranslate; } else if(upf != null && !upf.ShowLanguages) { ToolStripMenuItem mi; mi = new ToolStripMenuItem(); miBrowserTranslateSel.DropDownItems.Add(mi); mi.Text = GetProfileName(upf); mi.Tag = new MenuTranslateData(upf, selection, null); mi.Click += OnMenuTranslate; } foreach(TranslateProfile pf in TranslateOptions.Instance.Profiles) { if(currentProfile == pf) continue; upf = pf as UserTranslateProfile; if(pf == TranslateOptions.Instance.DefaultProfile || (upf != null && upf.ShowLanguages) ) { //add direct and reverted directions LanguagePair current_dir = pf.SelectedLanguagePair; ToolStripMenuItem mi; ToolStripMenuItem parent_mi = miBrowserTranslateSel; if(current_dir.To != current_dir.From) { //add submenu parent_mi = new ToolStripMenuItem(); miBrowserTranslateSel.DropDownItems.Add(parent_mi); if(pf == TranslateOptions.Instance.DefaultProfile) parent_mi.Text = TranslateString(pf.Name); else parent_mi.Text = pf.Name; LanguagePair inverted_dir = new LanguagePair(current_dir.To, current_dir.From); if(pf.GetLanguagePairs().Contains(inverted_dir) ) { mi = new ToolStripMenuItem(); parent_mi.DropDownItems.Add(mi); mi.Text = LangPack.TranslateLanguage(inverted_dir.From) + "->" + LangPack.TranslateLanguage(inverted_dir.To); mi.Tag = new MenuTranslateData(pf, selection, inverted_dir); mi.Click += OnMenuTranslate; } } mi = new ToolStripMenuItem(); parent_mi.DropDownItems.Add(mi); if(parent_mi == miBrowserTranslateSel) { if(pf == TranslateOptions.Instance.DefaultProfile) mi.Text = TranslateString(pf.Name); else mi.Text = pf.Name; mi.Text += LangPack.TranslateLanguage(current_dir.From) + "->" + LangPack.TranslateLanguage(current_dir.To); } else mi.Text = LangPack.TranslateLanguage(current_dir.From) + "->" + LangPack.TranslateLanguage(current_dir.To); mi.Tag = new MenuTranslateData(pf, selection, current_dir); mi.Click += OnMenuTranslate; } else if(upf != null && !upf.ShowLanguages) { ToolStripMenuItem mi; mi = new ToolStripMenuItem(); miBrowserTranslateSel.DropDownItems.Add(mi); mi.Text = GetProfileName(upf); mi.Tag = new MenuTranslateData(upf, selection, null); mi.Click += OnMenuTranslate; } } } }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { InternalDoTranslate(phrase, languagesPair, subject, result, networkSetting, ""); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { if(string.IsNullOrEmpty(viewState)) { //emulate first access to site WebRequestHelper helpertop = new WebRequestHelper(result, new Uri("http://www.prolingoffice.com/page.aspx?l1=43"), networkSetting, WebRequestContentType.UrlEncodedGet, Encoding.GetEncoding(1251)); string responseFromServertop = helpertop.GetResponse(); viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServertop); eventValidation = StringParser.Parse("id=\"__EVENTVALIDATION\" value=\"", "\"", responseFromServertop); } WebRequestHelper helper = new WebRequestHelper(result, new Uri("http://www.prolingoffice.com/page.aspx?l1=43"), networkSetting, WebRequestContentType.UrlEncoded, Encoding.GetEncoding(1251)); //__EVENTTARGET=_ctl1%24Menu1&__EVENTARGUMENT=1& //__VIEWSTATE={0}&q={1}&_ctl1%3AtsLang=rbLangU&LanguageH=RUS& //__EVENTVALIDATION={2} string query = "__EVENTTARGET=_ctl1%24Menu1&__EVENTARGUMENT=1&__VIEWSTATE={0}&q={1}&_ctl1%3AtsLang=rbLangU&LanguageH=RUS&__EVENTVALIDATION={2}"; query = string.Format(query, HttpUtility.UrlEncode(viewState, helper.Encoding), HttpUtility.UrlEncode(phrase, helper.Encoding), HttpUtility.UrlEncode(eventValidation, helper.Encoding)); helper.AddPostData(query); string responseFromServer = helper.GetResponse(); viewState = StringParser.Parse("id=\"__VIEWSTATE\" value=\"", "\"", responseFromServer); eventValidation = StringParser.Parse("id=\"__EVENTVALIDATION\" value=\"", "\"", responseFromServer); if(responseFromServer.IndexOf("��������� ����� ����� �� ��������. ��������� �������� ����� ������, ��� ����������� � �����������, ��� �������� � <a") >= 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else if(responseFromServer.IndexOf("� ����� ���������� ������. �������� ������� � ����:</b>") >= 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else if(responseFromServer.IndexOf("������� ��� ����� ����� �� ��������. ��������� �������� ����� ������, ��� ����������� � �����������, ��� �������� � <") >= 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else if(responseFromServer.IndexOf("� ����� ���������� ������.</b>") >= 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } string translation = StringParser.Parse("<span class=\"wrd\" xmlns:msxsl=\"urn:schemas-microsoft-com:xslt\">", "</TABLE></span>", responseFromServer); string abbr = StringParser.Parse("title=\"", "\"", translation); abbr += " " + StringParser.Parse("xslt\">", "</span>", translation).Trim(); //result.Abbreviation = abbr; StringParser parser = new StringParser(translation); string[] translations = parser.ReadItemsList("<span class=\"tolk\"", "</td><td></td></tr>", "3495783-4572385"); foreach(string subtranslation in translations) { translation = StringParser.Parse(">", "</span>", subtranslation); Result subres; subres = CreateNewResult(translation, languagesPair, subject); result.Childs.Add(subres); parser = new StringParser(subtranslation); string[] subtranslations = parser.ReadItemsList("<a ", "/a>", "3495783-4572385"); foreach(string s in subtranslations) subres.Translations.Add(StringParser.Parse(">", "<", s)); } }
public TausTranslationProviderLanguageDirection(TausTranslationProvider provider, LanguagePair languages) { _provider = provider; _languageDirection = languages; _options = _provider.Options; _visitor = new TausTranslationProviderElementVisitor(_options); //#region "CompileCollection" //_listOfTranslations = new Dictionary<string, string>(); //// Load the content of the specified list file and fill it //// into the multiple identical sources are not allowed //using (StreamReader sourceFile = new StreamReader(_options.ListFileName)) //{ // sourceFile.ReadLine(); // Skip the first line as it contains the language direction. // char fileDelimiter = Convert.ToChar(_options.Delimiter); // while (!sourceFile.EndOfStream) // { // string[] currentPair = sourceFile.ReadLine().Split(fileDelimiter); // if (currentPair.Count<string>() != 2) // { // // The current line does not contain a proper source/target segment pair. // continue; // } // // Add the source/target segment pair to the collection // // after checking that the current source segment does not // // already exist in the Dictionary. // if (!_listOfTranslations.ContainsKey(currentPair[0])) // { // _listOfTranslations.Add(currentPair[0] ,currentPair[1]); // } // } // sourceFile.Close(); //} //#endregion }
public ITranslationProviderLanguageDirection GetLanguageDirection(LanguagePair languageDirection) { return(new MtTranslationProviderLanguageDirection(this, languageDirection, _htmlUtil)); }
/// <summary> /// Determines the language direction of the delimited list file by /// reading the first line. Based upon this information it is determined /// whether the plug-in supports the language pair that was selected by /// the user. /// </summary> #region "SupportsLanguageDirection" public bool SupportsLanguageDirection(LanguagePair languageDirection) { return(true); }
public bool SupportsLanguageDirection(LanguagePair languageDirection) => true; // TODO: don't know yet of any limitations
public DtSearch4StudioLanguageDirection(DtSearch4StudioProvider dtSearch4StudioProvider, LanguagePair languageDirection) { _dtSearch4StudioProvider = dtSearch4StudioProvider; _languagePair = languageDirection; _providerSettings = dtSearch4StudioProvider?.ProviderSettings; }
private void SaveLanguagePairConfig(LanguagePair languagePair) { File.WriteAllText(Path.Combine(languagePair.ConfigDirectory, "config.json"), JsonConvert.SerializeObject(languagePair.CreateDto(), Formatting.Indented)); }
public DeepLSamplerTranslationProviderLanguageDirection(DeepLSamplerTranslationProvider provider, LanguagePair languages) { // this gets instantiated hundreds of times // DeepLSamplerTranslationProvider.log.WriteLine("DeepLSamplerTranslationProviderLanguageDirection instantiated", true); _provider = provider; _languageDirection = languages; _options = _provider.Options; _visitor = new DeepLSamplerTranslationProviderElementVisitor(_options); //_listOfTranslations = new Dictionary<string, string>(); // examples //_languageDirection.SourceCultureName = "en-US"; //_languageDirection.TargetCultureName = "de-DE"; string _source_lang = _languageDirection.SourceCultureName.Substring(0, 2).ToUpper(); string _target_lang = _languageDirection.TargetCultureName.Substring(0, 2).ToUpper(); // TRY / CATCH !!!! // without the if statement, this was repeated many times! if (DeepLSamplerTranslationProvider.deepL.SrcLang != _source_lang || DeepLSamplerTranslationProvider.deepL.TgtLang != _target_lang) { DeepLSamplerTranslationProvider.deepL.setLanguages(_source_lang, _target_lang); } }
public string getTranslation(LanguagePair languageDirection, string sourceString) { var translatedText = String.Empty; try { var client = new RestClient(uri); var request = new RestRequest("translate?engine=etenlv&auth=public&conf=fml,et", Method.POST); request.AddParameter("src", sourceString); //request.AddUrlSegment("src", sourceString); var response = client.Execute(request).Content; Test translatedObject = JsonConvert.DeserializeObject <Test>(response); while (translatedObject.tgt == "(Some error, sorry)") { string[] sourceStringList = sourceString.Split('|'); int sourceStringLen = sourceStringList.Length; var sourceStringNew = String.Empty; for (var i = 0; i < 2; i++) { if (i == 0) { sourceStringNew = String.Join("|", sourceStringList.Take(sourceStringLen - 2)); } else { sourceStringNew = String.Join("|", sourceStringList.Skip(sourceStringLen - 2).Take(1)); } request.AddOrUpdateParameter("src", sourceStringNew); response = client.Execute(request).Content; translatedObject = JsonConvert.DeserializeObject <Test>(response); if (i == 1) { translatedText += translatedObject.tgt; } else { translatedText += translatedObject.tgt + "|"; } } } if (translatedObject != null && translatedText == String.Empty) { translatedText = translatedObject.tgt; Console.WriteLine(translatedText); } } catch (WebException e) { var response = (HttpWebResponse)e.Response; string message = string.Format("Http status code={0}, error message= {1}", response.StatusCode, e.Message); throw new Exception(message); } return(translatedText); }
public SdlMTCloudLanguageDirection(SdlMTCloudTranslationProvider translationProvider, LanguagePair languageDirection, EditorController editorController) { _translationProvider = translationProvider; _languageDirection = languageDirection; _translationUnits = new List <TranslationUnit>(); _editorController = editorController; }
public ITranslationProviderLanguageDirection GetLanguageDirection(LanguagePair languageDirection) { Log.Logger.Trace(""); return(new TranslationProviderLanguageDirection(this, languageDirection)); }
public TranslationProviderLanguageDirection(TranslationProvider provider, LanguagePair languages) { Log.Logger.Trace(""); this.provider = provider; languageDirection = languages; }
public TartuNLPProviderLanguageDirection(TartuNLPProvider provider, LanguagePair languages) { _provider = provider; _languageDirection = languages; _options = _provider.Options; }
public bool SupportsLanguageDirection(LanguagePair languageDirection) { return(DeepLTranslationProviderConnecter.IsLanguagePairSupported(languageDirection.SourceCulture, languageDirection.TargetCulture)); }
public LanguageMappingModel GetLanguageMappingModel(LanguagePair languageDirection, List <MappedLanguage> mappedLanguages) { var sourceLanguageCode = mappedLanguages?.FirstOrDefault(s => s.TradosCode.Equals(languageDirection.SourceCulture?.Name)); if (sourceLanguageCode == null) { return(null); } var sourceLanguageMappings = LanguageMappingsService.GetMTCloudLanguages(sourceLanguageCode, languageDirection.SourceCulture); var sourceLanguageMappingSelected = sourceLanguageMappings.FirstOrDefault(a => a.IsLocale) ?? sourceLanguageMappings[0]; var targetLanguageCode = mappedLanguages.FirstOrDefault(s => s.TradosCode.Equals(languageDirection.TargetCulture?.Name)); if (targetLanguageCode == null) { return(null); } var name = $"{languageDirection.SourceCulture?.DisplayName} - {languageDirection.TargetCulture?.DisplayName}"; var savedLanguageMappingModel = Options.LanguageMappings.FirstOrDefault(a => a.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase)); var targetLanguageMappings = LanguageMappingsService.GetMTCloudLanguages(targetLanguageCode, languageDirection.TargetCulture); var targetLanguageMappingSelected = targetLanguageMappings.FirstOrDefault(a => a.IsLocale) ?? targetLanguageMappings[0]; // assign the selected target langauge targetLanguageMappingSelected = targetLanguageMappings.FirstOrDefault(a => a.CodeName.Equals(savedLanguageMappingModel?.SelectedTarget?.CodeName)) ?? targetLanguageMappingSelected; var engineModels = LanguageMappingsService.GetTranslationModels(sourceLanguageMappingSelected, targetLanguageMappingSelected, sourceLanguageCode.TradosCode, targetLanguageCode.TradosCode); // attempt to recover the language model from the secondary language code if it exists! if (engineModels.Count == 1 && engineModels[0].DisplayName == PluginResources.Message_No_model_available && targetLanguageMappings.Count > 1 && savedLanguageMappingModel?.SelectedModel.DisplayName != PluginResources.Message_No_model_available) { var secondaryLanguageCode = targetLanguageMappings.FirstOrDefault(a => a.CodeName != targetLanguageMappingSelected.CodeName); var secondaryEngineModels = LanguageMappingsService.GetTranslationModels( sourceLanguageMappingSelected, secondaryLanguageCode, sourceLanguageCode.TradosCode, targetLanguageCode.TradosCode); if (secondaryEngineModels.Any()) { engineModels = secondaryEngineModels; targetLanguageMappingSelected = secondaryLanguageCode; } } if (engineModels.Any()) { // assign the selected model var selectedModel = engineModels.FirstOrDefault(a => a.DisplayName.Equals(savedLanguageMappingModel?.SelectedModel?.DisplayName, StringComparison.InvariantCultureIgnoreCase)) ?? engineModels.FirstOrDefault(a => a.Model.Equals("generic", StringComparison.InvariantCultureIgnoreCase)) ?? engineModels[0]; var dictionaries = LanguageMappingsService.GetDictionaries(sourceLanguageMappingSelected, targetLanguageMappingSelected); // assign the selected dictionary var selectedDictionary = dictionaries.FirstOrDefault(a => a.Name.Equals(savedLanguageMappingModel?.SelectedDictionary?.Name)) ?? dictionaries[0]; var languageMappingModel = new LanguageMappingModel { Name = name, SourceLanguages = sourceLanguageMappings, TargetLanguages = targetLanguageMappings, SelectedSource = sourceLanguageMappingSelected, SelectedTarget = targetLanguageMappingSelected, SourceTradosCode = sourceLanguageCode.TradosCode, TargetTradosCode = targetLanguageCode.TradosCode, Models = engineModels, SelectedModel = selectedModel, Dictionaries = dictionaries, SelectedDictionary = selectedDictionary }; return(languageMappingModel); } return(null); }
public ITranslationProviderLanguageDirection GetLanguageDirection(LanguagePair languageDirection) { return(new TranslationProviderLanguageDirection(languageDirection, _client, this)); }
/// <summary> /// The main method that dose the translation. /// </summary> /// <param name="direction"></param> /// <param name="text"></param> /// <returns></returns> public MyTuple <string, double?> TranslateText(LanguagePair direction, string text) { string system = m_profileCollection.GetActiveSystemForProfile(direction); string terms = m_profileCollection.GetActiveTermCorporaForSystem(direction, system); if (system != "") { string result = ""; double?score = null; try { ((IContextChannel)m_service.InnerChannel).OperationTimeout = new TimeSpan(0, 0, m_timeout); string qeParam = m_useQualityEstimates || m_dynamicResultScore ? ",qe" : ""; var translation = m_service.TranslateEx(m_strAppID, system, RemoveControlCharacters(text), string.Format("client=SDLTradosStudio,version=1.5,termCorpusId={0}" + qeParam, terms)); result = translation != null && (translation.qualityEstimate >= m_minAllowedQualityEstimateScore || !m_useQualityEstimates) ? translation.translation : ""; score = m_dynamicResultScore? translation.qualityEstimate : (double?)null; } catch (FaultException <Fault> ex) { string errNum = ex.Detail.ErrorCode; if (errNum.StartsWith("1")) { Form UForm = null; // don't allow multiple threads in this block. otherwise there is a race condition when two threads check that the LimitationForm is closed // and only then both of them proceed to open the form leading to two (or more) open forms lock (limitFormLocker) { if ((UForm = IsFormAlreadyOpen(typeof(LimitationForm))) == null) { string Error_url = string.Format("https://www.letsmt.eu/Error.aspx?code={0}&user={1}", errNum, m_service.ClientCredentials.UserName.UserName); AutoResetEvent formLoadedEvent = new AutoResetEvent(false); var t = new Thread(() => CallForm(Error_url, formLoadedEvent)); t.SetApartmentState(ApartmentState.STA); t.Start(); // wait until the limitationForm has loaded try { formLoadedEvent.WaitOne(); } catch (AbandonedMutexException aex) { // the limitform crashed or something. continue } ////close the form if it is open // TODO: we should wait until the form has loaded. otherwise the next IsFormAlreadyOpen check cannot be relied upon. two (or more) forms could open } } } else if (errNum == "41") // Term corpora id failed validation { m_profileCollection.SetActiveTermCorporaForSystem(direction, system, ""); // This doesn't get serialized until the user opens the settings form. If Trados is closed before that the faulty term id is used again on the next run. return(TranslateText(direction, text)); } else { throw; } } catch (TimeoutException ex) //else if (ex.Message.StartsWith("The request channel timed out ")) { return(MyTuple.Create("", (double?)null)); } catch (MessageSecurityException ex) { if (ex.Message.Contains("The HTTP request is unauthorized")) { // The Client ID is probably invalid. There is no immediate reason to throw a // TranslationProviderAuthenticationException since it does not get handled like // in the rest of the code by re-opening the plugin authentication form, but we'll // use it anyway. throw new TranslationProviderAuthenticationException(); } } return(MyTuple.Create(result, score)); } //return ""; throw new InvalidOperationException("Default system for this languge pair not selected."); }
private Engine CreateEngine(LanguagePair languagePair, string configDir) { return(new Engine(_smtModelFactory, _ruleEngineFactory, _options.InactiveEngineTimeout, configDir, languagePair.SourceLanguageTag, languagePair.TargetLanguageTag)); }
public MyTranslationProviderLanguageDirection(TmxMallTranslationProvider provider, LanguagePair languages) { this._languages = languages; this._provider = provider; this._options = this._provider.Options; this._visitor = new TmxMallSegmentElementVisitor(); this._translationClient = new TranslationClient(languages.SourceCulture, languages.TargetCulture, this._options); }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://slovnyk.org/fcgi-bin/dic.fcgi?iw={0}&hn=pre&il={1}&ol={2}&ul=en-us"; query = string.Format(CultureInfo.InvariantCulture, query, HttpUtility.UrlEncode(phrase), ConvertLanguage(languagesPair.From), ConvertLanguage(languagesPair.To)); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); string responseFromServer = helper.GetResponse().Trim(); if(string.IsNullOrEmpty(responseFromServer)) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { string translation = StringParser.Parse("<PRE>", "</PRE>", responseFromServer).Trim(); if(string.IsNullOrEmpty(translation)) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } string subphrase, subtranslation; int startIdx = 0; int newLineIdx = 0; int tabIdx = translation.IndexOf('\t', startIdx); bool firstRun = true; Result subres = result; while(tabIdx >= 0) { newLineIdx = translation.IndexOf('\n', startIdx); if(newLineIdx < 0) newLineIdx = translation.Length; subphrase = translation.Substring(startIdx, tabIdx - startIdx); subtranslation = translation.Substring(tabIdx + 1, newLineIdx - tabIdx - 1); startIdx = newLineIdx + 1; if(startIdx < translation.Length) tabIdx = translation.IndexOf('\t', startIdx); else tabIdx = -1; if(firstRun && tabIdx < 0 && string.Compare(subphrase, phrase, true, CultureInfo.InvariantCulture) ==0) { result.Translations.Add(subtranslation); return; } if(firstRun) { subres = CreateNewResult(subphrase, languagesPair, subject); result.Childs.Add(subres); } firstRun = false; if(string.Compare(subphrase, subres.Phrase, true, CultureInfo.InvariantCulture) !=0) { subres = CreateNewResult(subphrase, languagesPair, subject); result.Childs.Add(subres); } subres.Translations.Add(subtranslation); } } }
public LanguagePair(LanguagePair lp) { Source = lp.Source; Target = lp.Target; }
public MenuTranslateData(TranslateProfile translateProfile, string selection, LanguagePair languagePair) { this.translateProfile = translateProfile; this.selection = selection; this.languagePair = languagePair; }
/// <summary> /// Instantiates the variables and fills the list file content into /// a Dictionary collection object. /// </summary> public MtTranslationProviderLanguageDirection(MtTranslationProvider provider, LanguagePair languages, HtmlUtil htmlUtil) { _provider = provider; _languageDirection = languages; _options = _provider.Options; _htmlUtil = htmlUtil; }
void InternalDoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting, string post_data) { WebRequestHelper helper = null; if(string.IsNullOrEmpty(post_data)) { string query = "http://www.merriam-webster.com/dictionary/{0}"; query = string.Format(query, HttpUtility.UrlEncode(phrase)); result.ArticleUrl = query; helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); //helper.UseGoogleCache = true; } else { helper = new WebRequestHelper(result, new Uri("http://www.merriam-webster.com/dictionary"), networkSetting, WebRequestContentType.UrlEncoded); helper.AddPostData(post_data); } string responseFromServer = helper.GetResponse(); helper = null; if(responseFromServer.IndexOf("The word you've entered isn't in the dictionary.") >= 0) { if(responseFromServer.IndexOf("<PRE>") < 0) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else { //get suggestions StringParser parser = new StringParser("<PRE>", "</PRE>", responseFromServer); string[] items = parser.ReadItemsList("\">", "<", "345873409587"); foreach(string item in items) { string part = item; string link = "html!<p><a href=\"http://www.merriam-webster.com/dictionary/{0}\" title=\"http://www.merriam-webster.com/dictionary/{0}\">{0}</a></p>"; link = string.Format(link, part); result.Translations.Add(link); } return; } } if(!(responseFromServer.Contains("One entry found.\n<br/>") || responseFromServer.Contains("One entry found.\n<br />"))) { if(string.IsNullOrEmpty(post_data) && responseFromServer.Contains("'list' value=\"va:")) { string count_str = StringParser.Parse("'list' value=\"va:", ",", responseFromServer); int count; if(int.TryParse(count_str, out count)) result.MoreEntriesCount = count; } StringParser parser = new StringParser("<ol class=\"results\"", "</ol>", responseFromServer); string[] items = parser.ReadItemsList("href=\"/dictionary/", "</a>"); foreach(string item in items) { string part = StringParser.ExtractLeft("\">", item); string name = StringParser.ExtractRight("\">", item); name = StringParser.RemoveAll("<sup>", "</sup>", name); string link = "html!<p><a href=\"http://www.merriam-webster.com/dictionary/{0}\" title=\"http://www.merriam-webster.com/dictionary/{0}\">{1}</a></p>"; link = string.Format(link, part, name); result.Translations.Add(link); } if(result.Translations.Count < 50 && responseFromServer.IndexOf("name='incr'") > 0) { //we has more items //incr=Next+5&jump=dragon%27s+blood&book=Dictionary&quer=blood&list=45%2C31%2C3602592%2C0%3Bdragon%27s+blood%3D2000318535%3Bflesh+and+blood%3D2000400359%3Bfull-blood%5B1%2Cadjective%5D%3D2000425490%3Bfull-blood%5B2%2Cnoun%5D%3D2000425517%3Bhalf-blood%3D2000475964%3Bhalf+blood%3D2000475978%3Bhigh+blood+pressure%3D2000498596%3Blow+blood+pressure%3D2000629024%3Bnew+blood%3D2000712110%3Bpure-blooded%3D2000860991 string incr_value = StringParser.Parse("<input type='submit' value='", "'", responseFromServer); string quer_value = StringParser.Parse("<input type='hidden' name='quer' value=\"", "\"", responseFromServer); string list_value = StringParser.Parse("<input type='hidden' name='list' value=\"", "\"", responseFromServer); string post_data_value = "incr={0}&jump={1}&book=Dictionary&quer={2}&list={3}"; post_data_value = string.Format(post_data_value , incr_value, HttpUtility.UrlEncode(items[0]), HttpUtility.UrlEncode(quer_value), HttpUtility.UrlEncode(list_value) ); //some cleaning responseFromServer = null; InternalDoTranslate(phrase, languagesPair, subject, result, networkSetting, post_data_value); } if(result.MoreEntriesCount != 0 && string.IsNullOrEmpty(post_data)) result.MoreEntriesCount -= result.Translations.Count; } else if(responseFromServer.Contains("<span class=\"variant\">")) { string part = StringParser.Parse("<span class=\"variant\">", "</span>", responseFromServer); string link = "html!<p><a href=\"http://www.merriam-webster.com/dictionary/{0}\" title=\"http://www.merriam-webster.com/dictionary/{0}\">{0}</a></p>"; link = string.Format(link, part); result.Translations.Add(link); } }
public DeepLMtTranslationProviderLanguageDirection(DeepLMtTranslationProvider deepLMtTranslationProvider, LanguagePair languageDirection) { _deepLMtTranslationProvider = deepLMtTranslationProvider; _languageDirection = languageDirection; _options = deepLMtTranslationProvider.Options; }
protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting) { string query = "http://www.slovnenya.com/dictionary/{0}"; query = string.Format(query, HttpUtility.UrlEncode(phrase).Replace("+", "%20")); WebRequestHelper helper = new WebRequestHelper(result, new Uri(query), networkSetting, WebRequestContentType.UrlEncodedGet); helper.AcceptLanguage = "en-us,en"; string responseFromServer = helper.GetResponse(); if(responseFromServer.Contains("did not return any results</div>") || responseFromServer.Contains("</span>` did not return any results")) { result.ResultNotFound = true; throw new TranslationException("Nothing found"); } else if(responseFromServer.IndexOf("Query contains extraneous symbol(s)<") >= 0) { throw new TranslationException("Query contains extraneous symbols"); } else { result.ArticleUrl = query; result.ArticleUrlCaption = phrase; string translation = StringParser.Parse("<hr style=\"border:0;background-color:grey;height:1px;width:92%;text-align:center\" />", "<hr style=\"border:0;background-color:grey;height:1px;width:92%;text-align:center\" />", responseFromServer); StringsTree tree = StringParser.ParseTreeStructure("<table", "</table>", translation); if(tree.Childs.Count != 1) throw new TranslationException("Wrong data structure"); tree = tree.Childs[0]; if(tree.Childs.Count != 1) throw new TranslationException("Wrong data structure"); tree = tree.Childs[0]; Result wordres = result; if(tree.Childs.Count == 0) throw new TranslationException("Wrong data structure"); //get word if(tree.Childs[0].Childs.Count != 1) throw new TranslationException("Wrong data structure"); string word = StringParser.Parse("font-size:14pt\">", "<", tree.Childs[0].Childs[0].Data); for(int i = 1; i < tree.Childs.Count; i++) { StringsTree abbr_tree = tree.Childs[i]; Result abbrres = null; string abbr = StringParser.Parse("font-size:12pt\">", "<", abbr_tree.Data); Result tmpRes = CreateNewResult(abbr, languagesPair, subject); wordres.Childs.Add(tmpRes); abbrres = tmpRes; StringParser parser = new StringParser(abbr_tree.Childs[0].Data); string[] translations = parser.ReadItemsList("font-size:12pt\">", "<"); foreach(string trans in translations) abbrres.Translations.Add(trans); } } }
public MtProviderConfDialog(MtTranslationOptions options, ITranslationProviderCredentialStore credentialStore, LanguagePair langPair) { this.credstore = credentialStore; uri = new Uri("argostranslateprovider:///"); Options = options; connector = new ApiConnector(Options); this.langPair = langPair; InitializeComponent(); UpdateDialog(); }