private void IncludeTermbaseInStudio(ITermbase termbase, TermbaseGeneration termbaseCreator, string termbasePath) { ITelemetryTracker telemetryTracker = new TelemetryTracker(); try { telemetryTracker.StartTrackRequest("Including the termbase into Trados Studio"); telemetryTracker.TrackEvent("Including the termbase into Trados Studio", null); #region TbConfig var project = SdlTradosStudio.Application.GetController <ProjectsController>().CurrentProject; TermbaseConfiguration termbaseConfig = project.GetTermbaseConfiguration(); #endregion #region AddTb var studioTermbase = new LocalTermbase(termbasePath); termbaseConfig.Termbases.Add(studioTermbase); #endregion #region TermRecOptions TermRecognitionOptions options = termbaseConfig.TermRecognitionOptions; options.MinimumMatchValue = 50; options.SearchDepth = 200; options.ShowWithNoAvailableTranslation = true; options.SearchOrder = TermbaseSearchOrder.Hierarchical; #endregion #region TermbaseLanguageIndex var langs = termbaseCreator.GetProjectLanguages(); termbaseConfig.LanguageIndexes.Clear(); foreach (var lang in langs.Keys) { termbaseConfig.LanguageIndexes.Add(new TermbaseLanguageIndex(new Language(CultureInfo.GetCultureInfo(langs[lang])), lang)); } #endregion #region UpdateTermbaseConfiguration project.UpdateTermbaseConfiguration(termbaseConfig); #endregion } catch (Exception e) { telemetryTracker.TrackException(new UploadTermbaseException(PluginResources.Error_IncludeTermbaseInStudio + e.Message)); telemetryTracker.TrackTrace((new UploadTermbaseException(PluginResources.Error_IncludeTermbaseInStudio + e.Message)).StackTrace, Microsoft.ApplicationInsights.DataContracts.SeverityLevel.Error); throw new UploadTermbaseException(PluginResources.Error_IncludeTermbaseInStudio + e.Message); } }
protected override void Execute() { try { if (SdlTradosStudio.Application.GetController <FilesController>().SelectedFiles.Count() > 1) { MessageBox.Show(PluginResources.MessageContent_multipleFilesTermbase, PluginResources.MessageType_Info); return; } var selectedFileName = Path.GetFileNameWithoutExtension(SdlTradosStudio.Application.GetController <FilesController>().SelectedFiles.FirstOrDefault().Name); var extractedXmlFileName = Utils.GetXmlFileName(Utils.GetProjectPath()); if (selectedFileName != extractedXmlFileName) { MessageBox.Show(PluginResources.MessageContent_GenerateTermbaseAction, PluginResources.MessageType_Info); return; } var termbaseCreator = new TermbaseGeneration(); var termbaseDefaultContent = TermbaseDefinitionFile.GetResourceTextFile("termbaseDefaultDefinitionFile.xdt"); var termbaseDefinitionPath = TermbaseDefinitionFile.SaveTermbaseDefinitionToTempLocation(termbaseDefaultContent); TermbaseDefinitionFile.AddLanguages(termbaseDefinitionPath, termbaseCreator.GetProjectLanguages()); TermbaseDefinitionFile.AddLanguageGroups(termbaseDefinitionPath, termbaseCreator.GetProjectLanguages(), "EmptyEntry"); TermbaseDefinitionFile.AddLanguageGroups(termbaseDefinitionPath, termbaseCreator.GetProjectLanguages(), "DummyEntry"); TermbaseDefinitionFile.AddLanguageGroups(termbaseDefinitionPath, termbaseCreator.GetProjectLanguages(), "FullEntry"); TermbaseDefinitionFile.AddSchemaElements(termbaseDefinitionPath, termbaseCreator.GetProjectLanguages()); var termbase = termbaseCreator.CreateTermbase(termbaseDefinitionPath); if (termbase == null) { DisplayMessage(PluginResources.Info_TermbaseExists, PluginResources.MessageTitle); return; } termbaseCreator.PopulateTermbase(termbase); string termbaseDirectoryPath = Path.Combine(Path.GetDirectoryName(SdlTradosStudio.Application.GetController <ProjectsController>().CurrentProject.FilePath), "Tb"); if (!Directory.Exists(termbaseDirectoryPath)) { Directory.CreateDirectory(termbaseDirectoryPath); } string termbasePath = Path.Combine(termbaseDirectoryPath, Path.GetFileName(termbase._Path)); File.Copy(termbase._Path, termbasePath); IncludeTermbaseInStudio(termbase, termbaseCreator, termbasePath); DisplayMessage(PluginResources.Info_SuccessfullyAdded, PluginResources.MessageTitle); } catch (ProjectTermsException e) { DisplayMessage(e.Message, PluginResources.MessageType_Error); } catch (TermbaseDefinitionException e) { DisplayMessage(e.Message, PluginResources.MessageType_Error); } catch (TermbaseGenerationException e) { DisplayMessage(e.Message, PluginResources.MessageType_Error); } catch (UploadTermbaseException e) { DisplayMessage(e.Message, PluginResources.MessageType_Error); } }