Beispiel #1
0
 private void AddExtraDataToTranslate(OfferExtraData data)
 {
     lock (_transLock)
     {
         if (!_valuesToTranslate.Contains(data.Description[Languages.PolishCode]))
         {
             _valuesToTranslate.Add(data.Description[Languages.PolishCode]);
         }
         foreach (var p in data.Parameters)
         {
             if (!_valuesToTranslate.Contains(p.Name[Languages.RussianCode]))
             {
                 _valuesToTranslate.Add(p.Name[Languages.RussianCode]);
             }
             if (!_valuesToTranslate.Contains(p.Value[Languages.RussianCode]))
             {
                 _valuesToTranslate.Add(p.Value[Languages.RussianCode]);
             }
         }
     }
 }
Beispiel #2
0
        private void SetOfferExtraData(Offer offer, CancellationToken cancellationToken)
        {
            OfferExtraData data = null;

            try
            {
                data = _restClient.GetExtraDataInit(offer.Id);
                data.Description[Languages.RussianCode]    =
                    data.Description[Languages.PolishCode] = ConvertDescriptionHtmlToText(data.Description[Languages.PolishCode]);
                offer.Description = data.Description;
                offer.Parameters  = data.Parameters;
            }
            catch (Exception er)
            {
                _logger.LogError($"Offer '{offer.Id}' get extradata failed.", er);
                //throw new AllegroPlRequestException("Error get page data");
            }
            if (_settings.IsTranslationEnabled)
            {
                AddExtraDataToTranslate(data);
            }
        }
Beispiel #3
0
        private async Task ApplyTranslationsExtraData(OfferExtraData data, 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());



            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]);
            }
        }
Beispiel #4
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;
        }