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; }
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; } }
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]); * }*/ } }