Пример #1
0
        public async Task <string> TranslateAsync(string inSentence, TranslationEngine translationEngine, TranslatorLanguague fromLang, TranslatorLanguague toLang)
        {
            string result = String.Empty;

            await Task.Run(() =>
            {
                result = Translate(inSentence, translationEngine, fromLang, toLang);
            });

            return(result);
        }
Пример #2
0
        public string Translate(string inSentence, TranslationEngine translationEngine, TranslatorLanguague fromLang, TranslatorLanguague toLang)
        {
            if (fromLang.SystemName == toLang.SystemName)
            {
                return(inSentence);
            }

            TranslationRequest translationRequest = new TranslationRequest(inSentence, translationEngine.EngineName, fromLang.LanguageCode, toLang.LanguageCode);
            var cachedResult = transaltionCache.FirstOrDefault(x => x.Key == translationRequest);

            if (!cachedResult.Equals(defaultCachedResult))
            {
                return(cachedResult.Value);
            }

            string result = String.Empty;

            inSentence = PreprocessSentence(inSentence);

            var fromLangCode = fromLang.LanguageCode;
            var toLangCode   = toLang.LanguageCode;

            switch (translationEngine.EngineName)
            {
            case TranslationEngineName.GoogleTranslate:
            {
                result = GoogleTranslate(inSentence, fromLangCode, toLangCode);
                break;
            }

            case TranslationEngineName.Multillect:
            {
                result = MultillectTranslate(inSentence, fromLangCode, toLangCode);
                break;
            }

            case TranslationEngineName.DeepL:
            {
                result = DeeplTranslate(inSentence, fromLangCode, toLangCode);
                break;
            }

            case TranslationEngineName.Yandex:
            {
                result = YandexTranslate(inSentence, fromLangCode, toLangCode);
                break;
            }

            case TranslationEngineName.Amazon:
            {
                result = AmazonTranslate(inSentence, fromLangCode, toLangCode);
                break;
            }

            case TranslationEngineName.Papago:
            {
                result = PapagoTranslate(inSentence, fromLangCode, toLangCode);
                break;
            }

            case TranslationEngineName.Baidu:
            {
                result = BaiduTranslate(inSentence, fromLangCode, toLangCode);
                break;
            }

            default:
            {
                result = String.Empty;
                break;
            }
            }

            if (result.Length > 1)
            {
                cachedResult = transaltionCache.FirstOrDefault(x => x.Key == translationRequest);

                if (cachedResult.Equals(defaultCachedResult))
                {
                    transaltionCache.Add(new KeyValuePair <TranslationRequest, string>(translationRequest, result));
                }

                if (transaltionCache.Count > 180)
                {
                    transaltionCache.RemoveRange(0, 50);
                }
            }

            return(result);
        }