示例#1
0
        void ShowErorrText(TranslationArrivedEventArgs ea)
        {
            if (ea.ErrorCode == 1)
            {
                string text = ((string)_SettigsWindow.Resources["TranslationEngineSwitchMsg"]) + " " + Convert.ToString(_TataruUIModel.TranslationEngine);

                ShowTransaltedText(text, ea.Color);
            }
        }
示例#2
0
        protected async Task OnTranslationArrived(TranslationArrivedEventArgs ea)
        {
            await this.UIThreadAsync(() =>
            {
                _TextArrivedTime = DateTime.UtcNow;
                ShowWindow();

                if (ea.ErrorCode == 0)
                {
                    ShowTransaltedText(ea.Text, ea.Color);
                }
                else
                {
                    ShowErorrText(ea);
                }
                _TextArrivedTime = DateTime.UtcNow;
            });
        }
示例#3
0
        private async Task <TranslationArrivedEventArgs> TranslateMessage(string text, Color color)
        {
            var translationEA = new TranslationArrivedEventArgs(this)
            {
                Text      = "",
                ErrorCode = -1,
                Color     = color,
            };


            int translateTryCount = 0;

            bool notTransalted = true;
            int  errorCode     = 0;

            while (translateTryCount < GlobalSettings.MaxTranslateTryCount && notTransalted)
            {
                var diffTime = (int)Math.Round((DateTime.UtcNow - _LastTranslationTime).TotalMilliseconds);

                if (diffTime < GlobalSettings.TranslationDelay)
                {
                    await Task.Delay(GlobalSettings.TranslationDelay - diffTime);
                }


                string translation = string.Empty;
                Task.Run(async() =>
                {
                    translation = await _WebTranslator.TranslateAsync(text);
                }).Wait(GlobalSettings.TranslatorWaitTime);
                //}).Wait();

                _LastTranslationTime = DateTime.UtcNow;

                if (translation.Length < 1)
                {
                    notTransalted = true;
                    errorCode     = 1;

                    if (_EnginIndex < _TranslationEngines.Count)
                    {
                        _EnginIndex++;
                    }
                    else
                    {
                        _EnginIndex = 1;
                    }

                    _TataruUIModel.TranslationEngine = _TranslationEngines[_EnginIndex].TranslationEngine;

                    var ea = new TranslationArrivedEventArgs(this)
                    {
                        Text      = "",
                        ErrorCode = errorCode,
                        Color     = color,
                    };
                    _TranslationArrived.InvokeAsync(ea).Forget();
                }
                else
                {
                    notTransalted = false;
                    errorCode     = 0;
                }

                translateTryCount++;

                translationEA = new TranslationArrivedEventArgs(this)
                {
                    Text      = translation,
                    ErrorCode = errorCode,
                    Color     = color,
                };
            }

            return(translationEA);
        }