コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
                }
            }
        }
コード例 #5
0
        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;
        }
コード例 #6
0
        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) };
        }
コード例 #7
0
        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;
        }
コード例 #8
0
        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);
                }
            }
        }
コード例 #9
0
 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);
     }
 }
コード例 #10
0
        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
 }
コード例 #12
0
        /// <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;
        }
コード例 #15
0
        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);
        }
コード例 #16
0
        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;
        }
コード例 #18
0
        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));
        }
コード例 #19
0
        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);
        }
コード例 #20
0
        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;
        }
コード例 #21
0
        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);
        }
コード例 #22
0
ファイル: DictDUtils.cs プロジェクト: cyotek/translateclient
        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 />") + "&nbsp</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);
            }
        }
コード例 #23
0
        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);
            }
        }
コード例 #24
0
        /// <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;
        }
コード例 #25
0
 public ITranslationProviderLanguageDirection GetLanguageDirection(LanguagePair languageDirection)
 {
     return(new DeepLMtTranslationProviderLanguageDirection(this, languageDirection));
 }
コード例 #26
0
 /// <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
 }
コード例 #27
0
        /// <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);
        }
コード例 #28
0
 /// <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);
 }
コード例 #29
0
 public BeGlobalLanguageDirection(BeGlobalTranslationProvider beGlobalTranslationProvider, LanguagePair languageDirection)
 {
     _beGlobalTranslationProvider = beGlobalTranslationProvider;
     _languageDirection           = languageDirection;
     _options = beGlobalTranslationProvider.Options;
     _normalizeSourceTextHelper = new NormalizeSourceTextHelper();
     _translationUnits          = new List <TranslationUnit>();
 }
コード例 #30
0
        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();
 }
コード例 #32
0
        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;
                    }

                }
            }
        }
コード例 #33
0
 protected override void DoTranslate(string phrase, LanguagePair languagesPair, string subject, Result result, NetworkSetting networkSetting)
 {
     InternalDoTranslate(phrase, languagesPair, subject, result, networkSetting, "");
 }
コード例 #34
0
        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));
            }
        }
コード例 #35
0
        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
        }
コード例 #36
0
 public ITranslationProviderLanguageDirection GetLanguageDirection(LanguagePair languageDirection)
 {
     return(new MtTranslationProviderLanguageDirection(this, languageDirection, _htmlUtil));
 }
コード例 #37
0
 /// <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);
 }
コード例 #38
0
 public bool SupportsLanguageDirection(LanguagePair languageDirection) => true; // TODO: don't know yet of any limitations
コード例 #39
0
 public DtSearch4StudioLanguageDirection(DtSearch4StudioProvider dtSearch4StudioProvider, LanguagePair languageDirection)
 {
     _dtSearch4StudioProvider = dtSearch4StudioProvider;
     _languagePair            = languageDirection;
     _providerSettings        = dtSearch4StudioProvider?.ProviderSettings;
 }
コード例 #40
0
 private void SaveLanguagePairConfig(LanguagePair languagePair)
 {
     File.WriteAllText(Path.Combine(languagePair.ConfigDirectory, "config.json"), JsonConvert.SerializeObject(languagePair.CreateDto(), Formatting.Indented));
 }
コード例 #41
0
        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);
            }
        }
コード例 #42
0
        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);
        }
コード例 #43
0
 public SdlMTCloudLanguageDirection(SdlMTCloudTranslationProvider translationProvider, LanguagePair languageDirection, EditorController editorController)
 {
     _translationProvider = translationProvider;
     _languageDirection   = languageDirection;
     _translationUnits    = new List <TranslationUnit>();
     _editorController    = editorController;
 }
コード例 #44
0
 public ITranslationProviderLanguageDirection GetLanguageDirection(LanguagePair languageDirection)
 {
     Log.Logger.Trace("");
     return(new TranslationProviderLanguageDirection(this, languageDirection));
 }
コード例 #45
0
 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;
 }
コード例 #47
0
 public bool SupportsLanguageDirection(LanguagePair languageDirection)
 {
     return(DeepLTranslationProviderConnecter.IsLanguagePairSupported(languageDirection.SourceCulture,
                                                                      languageDirection.TargetCulture));
 }
コード例 #48
0
        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);
        }
コード例 #49
0
 public ITranslationProviderLanguageDirection GetLanguageDirection(LanguagePair languageDirection)
 {
     return(new TranslationProviderLanguageDirection(languageDirection, _client, this));
 }
コード例 #50
0
        /// <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.");
        }
コード例 #51
0
 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);
 }
コード例 #53
0
        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);
                }
            }
        }
コード例 #54
0
 public LanguagePair(LanguagePair lp)
 {
     Source = lp.Source;
     Target = lp.Target;
 }
コード例 #55
0
 public MenuTranslateData(TranslateProfile translateProfile, string selection, LanguagePair languagePair)
 {
     this.translateProfile = translateProfile;
     this.selection = selection;
     this.languagePair = languagePair;
 }
コード例 #56
0
 /// <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;
 }
コード例 #57
0
        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);
            }
        }
コード例 #58
0
 public DeepLMtTranslationProviderLanguageDirection(DeepLMtTranslationProvider deepLMtTranslationProvider, LanguagePair languageDirection)
 {
     _deepLMtTranslationProvider = deepLMtTranslationProvider;
     _languageDirection          = languageDirection;
     _options = deepLMtTranslationProvider.Options;
 }
コード例 #59
0
        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);
                }
            }
        }
コード例 #60
0
 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();
 }