Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }