public static async Task <bool> XlateWeblioPage(string text, WebView wv, CancellationToken cancelToken, IProgress <ProgressInfo> progress) { try { RemoteAgents.DescendedModels = DescendedModels; RemoteAgents.MarkMappedTextWithHtmlBoldTag = MarkMappedTextWithHtmlBoldTag; wv.Source = new HtmlWebViewSource { Html = "" }; var result = await Task.Run(() => { int lastPercent = 0; foreach (var section in RemoteAgents.TranslateByWeblio(text, SourceLanguage, TargetLanguage, cancelToken, progress)) { lastPercent = section.PercentOrErrorCode; text = section.TranslatedSection; if (!MainThread.IsMainThread) { MainThread.BeginInvokeOnMainThread(() => { _AddText(wv, text); }); } else { _AddText(wv, text); } } return(lastPercent < 100 ? false : true); }, cancelToken) .ConfigureAwait(true); // update CurrentUsedModels CurrentUsedModels.Clear(); CurrentUsedModels.AddRange(RemoteAgents.CurrentUsedModels); } catch (Exception ex) { _Report(progress, -1, string.Format(Languages.WebXlator.Str1TranslatingError, ex.Message), ex); return(false); } // finally, scroll to top if (AutoScrollToTop) { wv.Eval("window.scrollTo(0, 0)"); } return(true); }
public static async Task <bool> XlateApiFree(RemoteType remoteType, string text, WebView wv, CancellationToken cancelToken, IProgress <ProgressInfo> progress) { var result = false; try { RemoteAgents.DescendedModels = DescendedModels; RemoteAgents.MarkMappedTextWithHtmlBoldTag = MarkMappedTextWithHtmlBoldTag; wv.Source = new HtmlWebViewSource { Html = "" }; IEnumerable <YieldResult> xlatorResults = null; switch (remoteType) { case RemoteType.CrossLanguageFree: xlatorResults = RemoteAgents.TranslateByCrossLanguageFree(text, SourceLanguage, TargetLanguage, cancelToken, progress); break; case RemoteType.BaiduFree: xlatorResults = RemoteAgents.TranslateByBaiduFree(text, SourceLanguage, TargetLanguage, cancelToken, progress); break; case RemoteType.YoudaoFree: xlatorResults = RemoteAgents.TranslateByYoudaoFree(text, SourceLanguage, TargetLanguage, cancelToken, progress); break; case RemoteType.GoogleFree: xlatorResults = RemoteAgents.TranslateByGoogleFree(text, SourceLanguage, TargetLanguage, cancelToken, progress); break; case RemoteType.MicrosoftFree: default: // NOT SUPPORTED return(false); } result = await Task.Run(() => { int lastPercent = 0; foreach (var section in xlatorResults) { lastPercent = section.PercentOrErrorCode; var text2 = section.TranslatedSection; if (!MainThread.IsMainThread) { MainThread.BeginInvokeOnMainThread(() => { _AddText(wv, text2); }); } else { _AddText(wv, text2); } } return(lastPercent < 100 ? false : true); }, cancelToken) .ConfigureAwait(true); // update CurrentUsedModels CurrentUsedModels.Clear(); CurrentUsedModels.AddRange(RemoteAgents.CurrentUsedModels); } catch (Exception ex) { _Report(progress, -1, string.Format(Languages.WebXlator.Str1TranslatingError, ex.Message), ex); return(false); } // finally, scroll to top if (AutoScrollToTop && text.Length > 0) { wv.Eval("window.scrollTo(0, 0)"); } return(result); }