public void UpdateLanguageMappingModel(LanguageMappingModel languageMappingModel) { var translationModels = LanguageMappingsService.GetTranslationModels( languageMappingModel.SelectedSource, languageMappingModel.SelectedTarget, languageMappingModel.SourceTradosCode, languageMappingModel.TargetTradosCode); if (translationModels.Any()) { // assign the selected model var selectedModel = translationModels.FirstOrDefault(a => string.Compare(a.DisplayName, languageMappingModel.SelectedModel?.DisplayName, StringComparison.InvariantCultureIgnoreCase) == 0) ?? translationModels.FirstOrDefault(a => string.Compare(a.Model, "generic", StringComparison.InvariantCultureIgnoreCase) == 0) ?? translationModels[0]; languageMappingModel.Models = translationModels; languageMappingModel.SelectedModel = selectedModel; } var dictionaries = LanguageMappingsService.GetDictionaries(languageMappingModel.SelectedSource, languageMappingModel.SelectedTarget); // assign the selected dictionary var selectedDictionary = dictionaries.FirstOrDefault(a => a.Name.Equals(languageMappingModel.SelectedDictionary?.Name)) ?? dictionaries[0]; languageMappingModel.Dictionaries = dictionaries; languageMappingModel.SelectedDictionary = selectedDictionary; }
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); }
public LanguageMappingModel GetLanguageMappingModel(LanguagePair languageDirection, List <MappedLanguage> mappedLanguages) { var sourceLanguageCode = mappedLanguages?.FirstOrDefault(s => s.TradosCode.Equals(languageDirection.SourceCulture?.Name)); if (sourceLanguageCode == null) { return(null); } var sourceLanguageMappings = LanguageMappingsService.GetMTCloudLanguages(sourceLanguageCode, languageDirection.SourceCulture); var sourceLanguageMappingSelected = sourceLanguageMappings.FirstOrDefault(a => a.IsLocale) ?? sourceLanguageMappings[0]; var targetLanguageCode = mappedLanguages.FirstOrDefault(s => s.TradosCode.Equals(languageDirection.TargetCulture?.Name)); if (targetLanguageCode == null) { return(null); } var name = $"{languageDirection.SourceCulture?.DisplayName} - {languageDirection.TargetCulture?.DisplayName}"; var savedLanguageMappingModel = Options.LanguageMappings.FirstOrDefault(a => a.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase)); var targetLanguageMappings = LanguageMappingsService.GetMTCloudLanguages(targetLanguageCode, languageDirection.TargetCulture); var targetLanguageMappingSelected = targetLanguageMappings.FirstOrDefault(a => a.IsLocale) ?? targetLanguageMappings[0]; // assign the selected target langauge targetLanguageMappingSelected = targetLanguageMappings.FirstOrDefault(a => a.CodeName.Equals(savedLanguageMappingModel?.SelectedTarget?.CodeName)) ?? targetLanguageMappingSelected; var engineModels = LanguageMappingsService.GetTranslationModels(sourceLanguageMappingSelected, targetLanguageMappingSelected, sourceLanguageCode.TradosCode, targetLanguageCode.TradosCode); // attempt to recover the language model from the secondary language code if it exists! if (engineModels.Count == 1 && engineModels[0].DisplayName == PluginResources.Message_No_model_available && targetLanguageMappings.Count > 1 && savedLanguageMappingModel?.SelectedModel.DisplayName != PluginResources.Message_No_model_available) { var secondaryLanguageCode = targetLanguageMappings.FirstOrDefault(a => a.CodeName != targetLanguageMappingSelected.CodeName); var secondaryEngineModels = LanguageMappingsService.GetTranslationModels( sourceLanguageMappingSelected, secondaryLanguageCode, sourceLanguageCode.TradosCode, targetLanguageCode.TradosCode); if (secondaryEngineModels.Any()) { engineModels = secondaryEngineModels; targetLanguageMappingSelected = secondaryLanguageCode; } } if (engineModels.Any()) { // assign the selected model var selectedModel = engineModels.FirstOrDefault(a => a.DisplayName.Equals(savedLanguageMappingModel?.SelectedModel?.DisplayName, StringComparison.InvariantCultureIgnoreCase)) ?? engineModels.FirstOrDefault(a => a.Model.Equals("generic", StringComparison.InvariantCultureIgnoreCase)) ?? engineModels[0]; var dictionaries = LanguageMappingsService.GetDictionaries(sourceLanguageMappingSelected, targetLanguageMappingSelected); // assign the selected dictionary var selectedDictionary = dictionaries.FirstOrDefault(a => a.Name.Equals(savedLanguageMappingModel?.SelectedDictionary?.Name)) ?? dictionaries[0]; var languageMappingModel = new LanguageMappingModel { Name = name, SourceLanguages = sourceLanguageMappings, TargetLanguages = targetLanguageMappings, SelectedSource = sourceLanguageMappingSelected, SelectedTarget = targetLanguageMappingSelected, SourceTradosCode = sourceLanguageCode.TradosCode, TargetTradosCode = targetLanguageCode.TradosCode, Models = engineModels, SelectedModel = selectedModel, Dictionaries = dictionaries, SelectedDictionary = selectedDictionary }; return(languageMappingModel); } return(null); }