コード例 #1
0
        private async Task ApplyTranslationsExtraData(ITranslateService translateService, OfferExtraData data, CancellationToken cancellationToken)
        {
            var dict = await translateService.GetDictionary(_valuesToTranslate);

            var yandexDict = await GetWoTranslateDictionary(dict, cancellationToken);



            try
            {
                await translateService.AddRecords(yandexDict, Languages.PolishCode, Languages.RussianCode, Guid.NewGuid());
            }
            catch
            {
            }

            var state = data.Parameters.FirstOrDefault(x => x.Name[Languages.PolishCode].ToLower() == StateAttributeName.ToLower());

            if (state != null)
            {
                data.State = RestClient.StatesByNames.ContainsKey(state.Value[Languages.PolishCode].ToLower()) ? RestClient.StatesByNames[state.Value[Languages.PolishCode].ToLower()] : OfferStateEnum.New;
            }

            data.Description[Languages.RussianCode] = GetSafeValFromDictionary(dict, yandexDict, data.Description[Languages.PolishCode]);
            foreach (var p in data.Parameters)
            {
                p.Name[Languages.RussianCode]  = GetSafeValFromDictionary(dict, yandexDict, p.Name[Languages.PolishCode]);
                p.Value[Languages.RussianCode] = GetSafeValFromDictionary(dict, yandexDict, p.Value[Languages.PolishCode]);
            }

            var notTranslatedParams       = data.Parameters.Where(x => x.Name[Languages.PolishCode].ToLower() == x.Name[Languages.RussianCode].ToLower()).Distinct().ToDictionary(x => x.Name[Languages.PolishCode].ToLower(), x => x.Name[Languages.RussianCode]);
            var notTranslatedParamsValues = data.Parameters.Where(x => x.Value[Languages.PolishCode].ToLower() == x.Value[Languages.RussianCode].ToLower()).Distinct().ToDictionary(x => x.Name[Languages.PolishCode].ToLower(), x => x.Name[Languages.RussianCode]);

            try
            {
                await translateService.AddRecords(notTranslatedParams, Languages.PolishCode, Languages.RussianCode, Guid.NewGuid());
            }
            catch (Exception er)
            {
                _logger.LogError(er.Message);
            }

            try
            {
                await translateService.AddRecords(notTranslatedParamsValues, Languages.PolishCode, Languages.RussianCode, Guid.NewGuid());
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
            }


            var desc             = data.Description[Languages.PolishCode].ToLower();
            var yandexTranslated = await _yandexTranslateClient.TranslateAsync(new string[] { desc }, Languages.PolishCode.ToLower(), Languages.RussianCode.ToLower(), cancellationToken);

            data.Description[Languages.RussianCode] = desc;
            data.Description[Languages.RussianCode] = yandexTranslated.Any() ? yandexTranslated[0] : desc;
        }
コード例 #2
0
        public async Task ApplyTranslations(ITranslateService translateService, Offer[] offers, string sourceText, string destText, CancellationToken cancellationToken)
        {
            try
            {
                var dict = await translateService.GetDictionary(_valuesToTranslate);

                var yandexDict = await GetForTranslateDictionary(translateService, dict, cancellationToken);

                try
                {
                    await translateService.AddRecords(yandexDict, Languages.PolishCode, Languages.RussianCode, Guid.NewGuid());
                }
                catch
                {
                    _logger.LogError("Error translate");
                }

                foreach (var o in offers)
                {
                    o.Name[Languages.RussianCode] = GetSafeValFromDictionary(dict, yandexDict, o.Name[Languages.PolishCode]);
                }
            }
            catch (Exception er)
            {
                //throw;
            }
        }
コード例 #3
0
        private async Task ApplyTranslations(Offer[] offers, string sourceText, string destText, CancellationToken cancellationToken)
        {
            var dict = _translateService.GetDictionary(_valuesToTranslate);


            var translatedTexts = dict.Select(x => x.Key).ToList();

            var forYandex        = _valuesToTranslate.Where(x => !translatedTexts.Contains(x.ToLower())).ToArray();
            var yandexTranslated = await _yandexTranslateClient.TranslateAsync(forYandex, Languages.PolishCode.ToLower(), Languages.RussianCode.ToLower(), cancellationToken);

            var yandexList = from f in forYandex
                             join y in yandexTranslated
                             on Array.IndexOf(forYandex, f) equals Array.IndexOf(yandexTranslated, y)
                             select new { Key = f, Value = y };
            var yandexDict = yandexList.ToDictionary(x => x.Key.ToLower(), x => x.Value);

            if (!yandexDict.ContainsKey(sourceText.ToLower()))
            {
                yandexDict.Add(sourceText.ToLower(), destText);
            }

            await _translateService.AddRecords(yandexDict, Languages.PolishCode, Languages.RussianCode, Guid.NewGuid());

            foreach (var o in offers)
            {
                /*var state = o.Parameters.FirstOrDefault(x => x.Name[Languages.PolishCode].ToLower() == StateAttributeName.ToLower());
                 * if (state != null)
                 * {
                 *  o.State = RestClient.StatesByNames.ContainsKey(state.Value[Languages.PolishCode].ToLower()) ? RestClient.StatesByNames[state.Value[Languages.PolishCode].ToLower()] : OfferStateEnum.New;
                 * }*/
                o.Name[Languages.RussianCode] = GetSafeValFromDictionary(dict, yandexDict, o.Name[Languages.PolishCode]);

                /*o.Description[Languages.RussianCode] = GetSafeValFromDictionary(dict, yandexDict, o.Description[Languages.PolishCode]);
                 * foreach (var p in o.Parameters)
                 * {
                 *  p.Name[Languages.RussianCode] = GetSafeValFromDictionary(dict, yandexDict, p.Name[Languages.PolishCode]);
                 *  p.Value[Languages.RussianCode] = GetSafeValFromDictionary(dict, yandexDict, p.Value[Languages.PolishCode]);
                 * }*/
            }
        }