private async Task UpdateAlternativeTranslationsAsync(string inputText, string inputLanguageCode, string outputLanguageCode)
        {
            if (inputText?.Length > maxCharactersForAlternativeTranslation || string.IsNullOrEmpty(inputLanguageCode) || string.IsNullOrEmpty(outputLanguageCode))
            {
                return;
            }

            try
            {
                AlternativeTranslationCollection.Clear();
                this.lookupLanguageTextBlock.Text = string.Empty;

                if (alternativeTranslationDict.ContainsKey(inputLanguageCode) &&
                    alternativeTranslationDict[inputLanguageCode].Any(t => t.Code.Equals(outputLanguageCode, StringComparison.OrdinalIgnoreCase)))
                {
                    LookupLanguage lookupLanguage = await this.translatorTextService.GetDictionaryLookup(inputText, inputLanguageCode, outputLanguageCode);

                    if (lookupLanguage?.Translations != null && lookupLanguage.Translations.Any())
                    {
                        var alternativeTranslations = new List <AlternativeTranslations>();
                        Dictionary <string, List <LookupTranslations> > groupedTranslations =
                            lookupLanguage.Translations.GroupBy(t => t.PosTag).ToDictionary(k => k.Key, v => v.ToList());
                        foreach (var groupedTranslation in groupedTranslations)
                        {
                            alternativeTranslations.Add(new AlternativeTranslations()
                            {
                                Tag          = groupedTranslation.Key,
                                Translations = groupedTranslation.Value.Select(v => new CustomLookupTranslations
                                {
                                    DisplayTarget    = v.DisplayTarget,
                                    BackTranslations = string.Join(", ", v.BackTranslations?.Select(t => t.DisplayText).ToList())
                                }).ToList()
                            });
                        }

                        // Update alternative translations
                        this.lookupLanguageTextBlock.Text = $"Translations of '{this.inputText.Text}'";
                        AlternativeTranslationCollection.AddRange(alternativeTranslations);
                    }
                }
            }
            catch (Exception ex)
            {
                if (SettingsHelper.Instance.ShowDebugInfo)
                {
                    await Util.GenericApiCallExceptionHandler(ex, "Failure loading alternative translations");
                }
            }
        }
Beispiel #2
0
        private async Task UpdateAlternativeTranslationsAsync(string inputText, string inputLanguageCode, string outputLanguageCode)
        {
            if (inputText == null || inputText.Length > maxCharactersForAlternativeTranslation)
            {
                return;
            }

            try
            {
                AlternativeTranslationCollection.Clear();
                this.lookupLanguageTextBlock.Text = string.Empty;
                LookupLanguage lookupLanguage = await this.translatorTextService?.GetDictionaryLookup(inputText, inputLanguageCode, outputLanguageCode);

                if (lookupLanguage?.Translations != null && lookupLanguage.Translations.Any())
                {
                    var alternativeTranslations = new List <AlternativeTranslations>();
                    Dictionary <string, List <LookupTranslations> > groupedTranslations =
                        lookupLanguage.Translations.GroupBy(t => t.PosTag).ToDictionary(k => k.Key, v => v.ToList());
                    foreach (var groupedTranslation in groupedTranslations)
                    {
                        alternativeTranslations.Add(new AlternativeTranslations()
                        {
                            Tag          = groupedTranslation.Key,
                            Translations = groupedTranslation.Value.Select(v => new CustomLookupTranslations
                            {
                                DisplayTarget    = v.DisplayTarget,
                                BackTranslations = string.Join(", ", v.BackTranslations?.Select(t => t.DisplayText).ToList())
                            }).ToList()
                        });
                    }

                    // Update alternative translations
                    this.lookupLanguageTextBlock.Text = $"Translations of '{this.inputText.Text}'";
                    AlternativeTranslationCollection.AddRange(alternativeTranslations);
                }
            }
            catch (Exception ex)
            {
                await Util.GenericApiCallExceptionHandler(ex, "Failure loading alternative translations");
            }
        }