private LanguageMappingModel GetLanguageMappingModel(InternalLanguageMapping mapping) { // assign the selected model var selectedModel = mapping.EngineModels.FirstOrDefault(a => a.DisplayName.Equals(mapping.SavedLanguageMappingModel?.SelectedModel?.DisplayName, StringComparison.InvariantCultureIgnoreCase)) ?? mapping.EngineModels.FirstOrDefault(a => a.Model.Equals("generic", StringComparison.InvariantCultureIgnoreCase)) ?? mapping.EngineModels[0]; var dictionaries = LanguageMappingsService.GetDictionaries(mapping.SelectedSourceLanguageMapping, mapping.SelectedTargetLanguageMapping); // assign the selected dictionary var selectedDictionary = dictionaries.FirstOrDefault(a => a.Name.Equals(mapping.SavedLanguageMappingModel?.SelectedDictionary?.Name)) ?? dictionaries[0]; var languageMappingModel = new LanguageMappingModel { Name = mapping.Name, SourceLanguages = mapping.SourceLanguageMappings, TargetLanguages = mapping.TargetLanguageMappings, SelectedSource = mapping.SelectedSourceLanguageMapping, SelectedTarget = mapping.SelectedTargetLanguageMapping, SourceTradosCode = mapping.SourceLanguageCode.TradosCode, TargetTradosCode = mapping.TargetLanguageCode.TradosCode, Models = mapping.EngineModels, SelectedModel = selectedModel, Dictionaries = dictionaries, SelectedDictionary = selectedDictionary }; return(languageMappingModel); }
private void ValidateEngineExistence(InternalLanguageMapping mapping) { // attempt to recover the language model from the secondary target language code if (NoEngineFound(mapping.EngineModels) && mapping.TargetLanguageMappings.Count > 1) { var secondaryLanguageCode = mapping.TargetLanguageMappings.FirstOrDefault(a => a.CodeName != mapping.SelectedTargetLanguageMapping.CodeName); var secondaryEngineModels = LanguageMappingsService.GetTranslationModels(mapping.SelectedSourceLanguageMapping, secondaryLanguageCode, mapping.SourceLanguageCode.TradosCode, mapping.TargetLanguageCode.TradosCode); if (secondaryEngineModels.Any()) { mapping.EngineModels = secondaryEngineModels; mapping.SelectedTargetLanguageMapping = secondaryLanguageCode; } } // attempt to recover the language model from the secondary source language code if (NoEngineFound(mapping.EngineModels) && mapping.SourceLanguageMappings.Count > 1) { var secondarySourceLanguageCode = mapping.SourceLanguageMappings.FirstOrDefault(a => a.CodeName != mapping.SelectedSourceLanguageMapping.CodeName); var secondaryEngineModels = LanguageMappingsService.GetTranslationModels(secondarySourceLanguageCode, mapping.SelectedTargetLanguageMapping, mapping.SourceLanguageCode.TradosCode, mapping.TargetLanguageCode.TradosCode); if (secondaryEngineModels.Any()) { mapping.EngineModels = secondaryEngineModels; mapping.SelectedSourceLanguageMapping = secondarySourceLanguageCode; } else if (mapping.TargetLanguageMappings.Count > 1) { // attempt to recover the language model from the secondary source OR target language code var secondaryTargetLanguageCode = mapping.TargetLanguageMappings.FirstOrDefault(a => a.CodeName != mapping.SelectedTargetLanguageMapping?.CodeName); secondaryEngineModels = LanguageMappingsService.GetTranslationModels( secondarySourceLanguageCode, secondaryTargetLanguageCode, mapping.SourceLanguageCode.TradosCode, mapping.TargetLanguageCode.TradosCode); if (secondaryEngineModels.Any()) { mapping.EngineModels = secondaryEngineModels; mapping.SelectedSourceLanguageMapping = secondarySourceLanguageCode; mapping.SelectedTargetLanguageMapping = secondaryTargetLanguageCode; } } } }
public LanguageMappingModel GetLanguageMappingModel(LanguagePair languageDirection, List <MappedLanguage> mappedLanguages) { var mapping = new InternalLanguageMapping { SourceLanguageCode = mappedLanguages?.FirstOrDefault(s => s.TradosCode.Equals(languageDirection.SourceCulture?.Name)) }; if (mapping.SourceLanguageCode == null) { return(null); } mapping.SourceLanguageMappings = LanguageMappingsService.GetMTCloudLanguages(mapping.SourceLanguageCode, languageDirection.SourceCulture); mapping.SelectedSourceLanguageMapping = mapping.SourceLanguageMappings.FirstOrDefault(a => a.IsLocale) ?? mapping.SourceLanguageMappings[0]; mapping.TargetLanguageCode = mappedLanguages.FirstOrDefault(s => s.TradosCode.Equals(languageDirection.TargetCulture?.Name)); if (mapping.TargetLanguageCode == null) { return(null); } mapping.Name = $"{languageDirection.SourceCulture?.DisplayName} - {languageDirection.TargetCulture?.DisplayName}"; mapping.SavedLanguageMappingModel = Options.LanguageMappings.FirstOrDefault(a => a.Name.Equals(mapping.Name, StringComparison.InvariantCultureIgnoreCase)); mapping.TargetLanguageMappings = LanguageMappingsService.GetMTCloudLanguages(mapping.TargetLanguageCode, languageDirection.TargetCulture); mapping.SelectedTargetLanguageMapping = mapping.TargetLanguageMappings.FirstOrDefault(a => a.IsLocale) ?? mapping.TargetLanguageMappings[0]; // assign the selected target langauge mapping.SelectedTargetLanguageMapping = mapping.TargetLanguageMappings.FirstOrDefault(a => a.CodeName.Equals(mapping.SavedLanguageMappingModel?.SelectedTarget?.CodeName)) ?? mapping.SelectedTargetLanguageMapping; mapping.EngineModels = LanguageMappingsService.GetTranslationModels(mapping.SelectedSourceLanguageMapping, mapping.SelectedTargetLanguageMapping, mapping.SourceLanguageCode.TradosCode, mapping.TargetLanguageCode.TradosCode); if (mapping.SavedLanguageMappingModel?.SelectedModel.DisplayName != PluginResources.Message_No_model_available) { ValidateEngineExistence(mapping); } if (mapping.EngineModels.Any()) { var languageMappingModel = GetLanguageMappingModel(mapping); return(languageMappingModel); } return(null); }