コード例 #1
0
        public virtual IProject CreateNewProject(ProjectInfo projectInfo, ProjectTemplateReference projectTemplateReference)
        {
            if (projectInfo is null)
            {
                return(null);
            }
            var newProject = new FileBasedProject(projectInfo, projectTemplateReference);

            return(newProject);
        }
コード例 #2
0
        public void CreateBasedOnTemplate()
        {
            #region "GetTemplate"
            string templateFile = @"c:\temp\project_template.sdltpl";
            ProjectTemplateReference template = new ProjectTemplateReference(templateFile);
            #endregion

            #region "TemplateBasedProject"
            FileBasedProject newProject = new FileBasedProject(GetInfoForTemplateProject(), template);
            newProject.Save();
            #endregion
        }
コード例 #3
0
        protected override void Execute()
        {
            var template = new ProjectTemplateReference(@"");

            var projectInfo = new ProjectInfo
            {
                Name            = "ProjectCreatedFromTemplateTest",
                SourceLanguage  = new Language(CultureInfo.GetCultureInfo("en-US")),                //import Sdl.core.globalization.dll
                TargetLanguages = new[]
                {
                    new Language(CultureInfo.GetCultureInfo("de-DE")),
                    new Language(CultureInfo.GetCultureInfo("fr-FR"))
                },
                //file path where you want to save the project
                LocalProjectFolder = @""
            };

            //import Sdl.ProjectAutomation.FileBased
            var fileBasedProject = new FileBasedProject(projectInfo, template);

            //HERE YOU NEED TO ADD THE PATH FOR FILES YOU WANT TO INCLUDE IN YOUT PROJECT
            var filesPath = new[] { @"" };

            //add files to project
            var projectFiles = fileBasedProject.AddFiles(filesPath);

            //we need to run automatic task to create the project in studio
            fileBasedProject.RunAutomaticTask(projectFiles.GetIds(), AutomaticTaskTemplateIds.Scan);
            var taskSequence = fileBasedProject.RunDefaultTaskSequence(projectFiles.GetIds());

            if (taskSequence.Status == TaskStatus.Completed)
            {
                //project was created succesfully
            }
            else
            {
                //here we'll see the erors
            }

            fileBasedProject.Save();
        }
コード例 #4
0
        /// <summary>
        /// Executes this instance.
        /// </summary>
        protected override void Execute()
        {
            string          grammarCheckerSettingsId      = "GrammarCheckerSettings";
            string          numberVerifierSettingsId      = "NumberVerifierSettings";
            IExtensionPoint globalVerifiersExtensionPoint = PluginManager.DefaultPluginRegistry.GetExtensionPoint <GlobalVerifierAttribute>();

            foreach (IExtension extension in globalVerifiersExtensionPoint.Extensions)
            {
                IGlobalVerifier globalVerifier  = (IGlobalVerifier)extension.CreateInstance();
                string          settingsGroupId = globalVerifier.SettingsId;
                if (settingsGroupId.Contains("Grammar"))
                {
                    grammarCheckerSettingsId = settingsGroupId;
                }

                if (settingsGroupId.Contains("Number"))
                {
                    numberVerifierSettingsId = settingsGroupId;
                }
            }

            // Show the dialog
            ApplyTemplateForm applyTemplateForm = new ApplyTemplateForm(Controller);

            if (applyTemplateForm.ShowDialog() == DialogResult.OK)
            {
                // This is the template that the user selected
                ApplyTemplate selectedTemplate = applyTemplateForm.ActiveTemplate;

                // Create list of projects
                List <FileBasedProject> selectedProjects = new List <FileBasedProject>();
                if (applyTemplateForm.ApplyToSelected)
                {
                    selectedProjects.AddRange(Controller.SelectedProjects);
                }
                else
                {
                    if (Controller.CurrentProject != null)
                    {
                        selectedProjects.Add(Controller.CurrentProject);
                    }
                }

                // Check if we have any projects
                if (selectedProjects.Count == 0)
                {
                    MessageBox.Show(applyTemplateForm.ApplyToSelected ? PluginResources.No_Projects_Selected : PluginResources.No_Current_Project, PluginResources.Plugin_Name, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                // Work through all projects
                StringBuilder projectsList = new StringBuilder();
                projectsList.AppendLine(PluginResources.Settings_Applied);
                foreach (FileBasedProject targetProject in selectedProjects)
                {
                    // Temporary folder path
                    string tempFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N"));

                    // This is the current project and it's related information
                    ProjectInfo targetProjectInfo = targetProject.GetProjectInfo();
                    projectsList.AppendLine(targetProjectInfo.Name);
                    ISettingsBundle targetSettingsBundle = targetProject.GetSettings();

                    // This is the source project - check if it's a loaded one
                    FileBasedProject sourceProject = Controller.GetAllProjects().FirstOrDefault(loadedProject => String.Compare(loadedProject.FilePath, selectedTemplate.FileLocation, StringComparison.OrdinalIgnoreCase) == 0);

                    // Not found so load it from the filing system
                    if (sourceProject == null)
                    {
                        if (string.IsNullOrEmpty(selectedTemplate.FileLocation))
                        {
                            if (selectedTemplate.Id != Guid.Empty)
                            {
                                // Create a new project based on a template configured in Studio
                                ProjectTemplateReference projectTemplate = new ProjectTemplateReference(selectedTemplate.Uri);
                                string savedFolder = targetProjectInfo.LocalProjectFolder;
                                targetProjectInfo.LocalProjectFolder = tempFolder;
                                sourceProject = new FileBasedProject(targetProjectInfo, projectTemplate);
                                targetProjectInfo.LocalProjectFolder = savedFolder;
                            }
                        }
                        else
                        {
                            if (Path.GetExtension(selectedTemplate.FileLocation).ToLowerInvariant() == ".sdltpl")
                            {
                                // Create a new project based on a file-based template
                                ProjectTemplateReference projectTemplate = new ProjectTemplateReference(selectedTemplate.FileLocation);
                                string savedFolder = targetProjectInfo.LocalProjectFolder;
                                targetProjectInfo.LocalProjectFolder = tempFolder;
                                sourceProject = new FileBasedProject(targetProjectInfo, projectTemplate);
                                targetProjectInfo.LocalProjectFolder = savedFolder;
                            }
                            else
                            {
                                // Load a project from the filing system
                                sourceProject = new FileBasedProject(selectedTemplate.FileLocation);
                            }
                        }
                    }

                    // Get the information from the source project
                    ProjectInfo     sourceProjectInfo    = sourceProject.GetProjectInfo();
                    ISettingsBundle sourceSettingsBundle = sourceProject.GetSettings();

                    // Copy all languages translation providers
                    if (selectedTemplate.TranslationProvidersAllLanguages != ApplyTemplateOptions.Keep)
                    {
                        try
                        {
                            // Update the "all languages" node
                            TranslationProviderConfiguration sourceProviderConfig = sourceProject.GetTranslationProviderConfiguration();
                            if (selectedTemplate.TranslationProvidersAllLanguages == ApplyTemplateOptions.Merge)
                            {
                                TranslationProviderConfiguration targetProviderConfig = targetProject.GetTranslationProviderConfiguration();
                                MergeTranslationProviders(sourceProviderConfig, targetProviderConfig);
                                ValidateTranslationProviderConfiguration(targetProviderConfig);
                                targetProject.UpdateTranslationProviderConfiguration(targetProviderConfig);
                            }
                            else
                            {
                                ValidateTranslationProviderConfiguration(sourceProviderConfig);
                                targetProject.UpdateTranslationProviderConfiguration(sourceProviderConfig);
                            }
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.Message, PluginResources.TPAL_Failed, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }

                    // Copy language-specific translation providers
                    if (selectedTemplate.TranslationProvidersSpecificLanguages != ApplyTemplateOptions.Keep)
                    {
                        if (sourceProjectInfo.SourceLanguage.Equals(targetProjectInfo.SourceLanguage))
                        {
                            foreach (Language sourceTargetLanguage in sourceProjectInfo.TargetLanguages)
                            {
                                foreach (Language targetTargetLanguage in targetProjectInfo.TargetLanguages)
                                {
                                    if (sourceTargetLanguage.Equals(targetTargetLanguage))
                                    {
                                        try
                                        {
                                            // Copy translation providers
                                            TranslationProviderConfiguration sourceProviderConfig = sourceProject.GetTranslationProviderConfiguration(sourceTargetLanguage);
                                            if (selectedTemplate.TranslationProvidersSpecificLanguages == ApplyTemplateOptions.Merge)
                                            {
                                                TranslationProviderConfiguration targetProviderConfig = targetProject.GetTranslationProviderConfiguration(targetTargetLanguage);
                                                MergeTranslationProviders(sourceProviderConfig, targetProviderConfig);
                                                ValidateTranslationProviderConfiguration(targetProviderConfig);
                                                targetProject.UpdateTranslationProviderConfiguration(targetTargetLanguage, targetProviderConfig);
                                            }
                                            else
                                            {
                                                ValidateTranslationProviderConfiguration(sourceProviderConfig);
                                                targetProject.UpdateTranslationProviderConfiguration(targetTargetLanguage, sourceProviderConfig);
                                            }
                                        }
                                        catch (Exception e)
                                        {
                                            MessageBox.Show(e.Message, string.Format(PluginResources.TPSL_Failed, targetTargetLanguage.DisplayName), MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                        }
                                    }
                                }
                            }
                        }
                    }

                    // Copy TM settings for all languages
                    if (selectedTemplate.TranslationMemoriesAllLanguages == ApplyTemplateOptions.Overwrite)
                    {
                        try
                        {
                            // Update the translation memory filter settings
                            CopySettingsGroup(sourceSettingsBundle, targetSettingsBundle, "TranslationMemorySettings", targetProject, null);
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.Message, PluginResources.TMAL_Failed, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }

                    // Copy TM settings for specific languages
                    if (selectedTemplate.TranslationMemoriesSpecificLanguages == ApplyTemplateOptions.Overwrite)
                    {
                        if (sourceProjectInfo.SourceLanguage.Equals(targetProjectInfo.SourceLanguage))
                        {
                            foreach (Language sourceTargetLanguage in sourceProjectInfo.TargetLanguages)
                            {
                                foreach (Language targetTargetLanguage in targetProjectInfo.TargetLanguages)
                                {
                                    if (sourceTargetLanguage.Equals(targetTargetLanguage))
                                    {
                                        try
                                        {
                                            // Now copy translation memory settings - different section
                                            ISettingsBundle sourceTmSettings = sourceProject.GetSettings(sourceTargetLanguage);
                                            ISettingsBundle targetTmSettings = targetProject.GetSettings(targetTargetLanguage);
                                            CopySettingsGroup(sourceTmSettings, targetTmSettings, "TranslationMemorySettings", targetProject, targetTargetLanguage);
                                        }
                                        catch (Exception e)
                                        {
                                            MessageBox.Show(e.Message, string.Format(PluginResources.TMSL_Failed, targetTargetLanguage.DisplayName), MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                        }
                                    }
                                }
                            }
                        }
                    }

                    // Copy terminology termbases
                    if (selectedTemplate.TerminologyTermbases != ApplyTemplateOptions.Keep)
                    {
                        TermbaseConfiguration sourceTermbaseConfig = sourceProject.GetTermbaseConfiguration();
                        TermbaseConfiguration targetTermbaseConfig = targetProject.GetTermbaseConfiguration();

                        if (selectedTemplate.TerminologyTermbases == ApplyTemplateOptions.Merge)
                        {
                            MergeTermbases(sourceTermbaseConfig, targetTermbaseConfig);
                        }
                        else
                        {
                            targetTermbaseConfig.TermbaseServerUri = sourceTermbaseConfig.TermbaseServerUri;
                            targetTermbaseConfig.Termbases.Clear();
                            targetTermbaseConfig.LanguageIndexes.Clear();
                            MergeTermbases(sourceTermbaseConfig, targetTermbaseConfig);
                        }

                        // Updating with zero termbases throws an exception
                        if (targetTermbaseConfig.Termbases.Count > 0)
                        {
                            try
                            {
                                targetProject.UpdateTermbaseConfiguration(targetTermbaseConfig);
                            }
                            catch (Exception e)
                            {
                                MessageBox.Show(e.Message, PluginResources.TBTB_Failed, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            }
                        }
                    }

                    // Copy terminology settings
                    if (selectedTemplate.TerminologySearchSettings == ApplyTemplateOptions.Overwrite)
                    {
                        TermbaseConfiguration sourceTermbaseConfig = sourceProject.GetTermbaseConfiguration();
                        TermbaseConfiguration targetTermbaseConfig = targetProject.GetTermbaseConfiguration();
                        targetTermbaseConfig.TermRecognitionOptions = sourceTermbaseConfig.TermRecognitionOptions;

                        // Updating with zero termbases throws an exception
                        if (targetTermbaseConfig.Termbases.Count > 0)
                        {
                            try
                            {
                                targetProject.UpdateTermbaseConfiguration(targetTermbaseConfig);
                            }
                            catch (Exception e)
                            {
                                MessageBox.Show(e.Message, PluginResources.TBSS_Failed, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            }
                        }
                    }

                    // Copy QA verification settings where applicable
                    if (selectedTemplate.VerificationQaChecker30 == ApplyTemplateOptions.Overwrite)
                    {
                        try
                        {
                            CopySettingsGroup(sourceSettingsBundle, targetSettingsBundle, "QAVerificationSettings", targetProject, null);
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.Message, PluginResources.QAQA_Failed, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }

                    // Copy tag verification settings where applicable
                    if (selectedTemplate.VerificationTagVerifier == ApplyTemplateOptions.Overwrite)
                    {
                        try
                        {
                            CopySettingsGroup(sourceSettingsBundle, targetSettingsBundle, "SettingsTagVerifier", targetProject, null);
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.Message, PluginResources.QATG_Failed, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }

                    // Copy term verification settings where applicable
                    if (selectedTemplate.VerificationTerminologyVerifier == ApplyTemplateOptions.Overwrite)
                    {
                        try
                        {
                            CopySettingsGroup(sourceSettingsBundle, targetSettingsBundle, "SettingsTermVerifier", targetProject, null);
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.Message, PluginResources.QATV_Failed, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }

                    // Copy number verification settings where applicable
                    if (selectedTemplate.VerificationNumberVerifier == ApplyTemplateOptions.Overwrite)
                    {
                        try
                        {
                            CopySettingsGroup(sourceSettingsBundle, targetSettingsBundle, numberVerifierSettingsId, targetProject, null);
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.Message, PluginResources.QANV_Failed, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }

                    // Copy grammar checking settings where applicable
                    if (selectedTemplate.VerificationGrammarChecker == ApplyTemplateOptions.Overwrite)
                    {
                        try
                        {
                            CopySettingsGroup(sourceSettingsBundle, targetSettingsBundle, grammarCheckerSettingsId, targetProject, null);
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.Message, PluginResources.QAGC_Failed, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }

                    // Copy file type settings where applicable
                    if (selectedTemplate.FileTypes == ApplyTemplateOptions.Overwrite)
                    {
                        try
                        {
                            var copiedTypes = new List <string>();
                            foreach (ProjectFile projectFile in targetProject.GetTargetLanguageFiles())
                            {
                                if (!copiedTypes.Contains(projectFile.FileTypeId))
                                {
                                    copiedTypes.Add(projectFile.FileTypeId);
                                    CopySettingsGroup(sourceSettingsBundle, targetSettingsBundle, projectFile.FileTypeId, targetProject, null);
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.Message, PluginResources.FTTS_Failed, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }

                    // Copy batch tasks settings where applicable
                    if (selectedTemplate.BatchTasksAllLanguages == ApplyTemplateOptions.Overwrite)
                    {
                        try
                        {
                            // Update the translation memory filter settings
                            CopySettingsGroup(sourceSettingsBundle, targetSettingsBundle, "PseudoTranslateSettings", targetProject, null);
                            CopySettingsGroup(sourceSettingsBundle, targetSettingsBundle, "AnalysisTaskSettings", targetProject, null);
                            CopySettingsGroup(sourceSettingsBundle, targetSettingsBundle, "VerificationSettings", targetProject, null);
                            CopySettingsGroup(sourceSettingsBundle, targetSettingsBundle, "TranslateTaskSettings", targetProject, null);
                            CopySettingsGroup(sourceSettingsBundle, targetSettingsBundle, "TranslationMemoryUpdateTaskSettings", targetProject, null);
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.Message, PluginResources.BTAL_Failed, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }

                    if (selectedTemplate.BatchTasksSpecificLanguages == ApplyTemplateOptions.Overwrite)
                    {
                        // Update specific language pairs where possible
                        if (sourceProjectInfo.SourceLanguage.Equals(targetProjectInfo.SourceLanguage))
                        {
                            foreach (Language sourceTargetLanguage in sourceProjectInfo.TargetLanguages)
                            {
                                foreach (Language targetTargetLanguage in targetProjectInfo.TargetLanguages)
                                {
                                    if (sourceTargetLanguage.Equals(targetTargetLanguage))
                                    {
                                        try
                                        {
                                            // Now copy translation memory settings - different section
                                            ISettingsBundle sourceTmSettings = sourceProject.GetSettings(sourceTargetLanguage);
                                            ISettingsBundle targetTmSettings = targetProject.GetSettings(targetTargetLanguage);
                                            CopySettingsGroup(sourceTmSettings, targetTmSettings, "PseudoTranslateSettings", targetProject, targetTargetLanguage);
                                            CopySettingsGroup(sourceTmSettings, targetTmSettings, "AnalysisTaskSettings", targetProject, targetTargetLanguage);
                                            CopySettingsGroup(sourceTmSettings, targetTmSettings, "VerificationSettings", targetProject, targetTargetLanguage);
                                            CopySettingsGroup(sourceTmSettings, targetTmSettings, "TranslateTaskSettings", targetProject, targetTargetLanguage);
                                            CopySettingsGroup(sourceTmSettings, targetTmSettings, "TranslationMemoryUpdateTaskSettings", targetProject, targetTargetLanguage);
                                        }
                                        catch (Exception e)
                                        {
                                            MessageBox.Show(e.Message, string.Format(PluginResources.BTSL_Failed, targetTargetLanguage.DisplayName), MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                        }
                                    }
                                }
                            }
                        }
                    }

                    // Remove the temporary folder if it exists
                    if (Directory.Exists(tempFolder))
                    {
                        Directory.Delete(tempFolder, true);
                    }

                    // Use reflection to synch the project to the server
                    try
                    {
                        var project = typeof(FileBasedProject).GetField("_project", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(targetProject);
                        project.GetType().GetMethod("UpdateServerProjectSettings").Invoke(project, null);
                    }
                    catch
                    {
                    }
                }

                // Tell the user we're done
                MessageBox.Show(projectsList.ToString(), PluginResources.Plugin_Name, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            // Save the project templates anyway
            applyTemplateForm.SaveProjectTemplates();
        }