コード例 #1
0
 protected override void OnInitializeTask()
 {
     Log.Setup();
     _reportCreator = new ReportCreatorService();
     _projectFiles  = new List <ProjectFile>();
     _renamedFiles  = new Dictionary <(ProjectFile, LanguageDirection), Tuple <string, string> >();
     _settings      = GetSetting <TargetRenamerSettings>();
     base.OnInitializeTask();
 }
コード例 #2
0
        private void GenerateReports()
        {
            var languageDirections = _projectFiles
                                     .GroupBy(p => new { p.GetLanguageDirection().TargetLanguage, p.GetLanguageDirection().SourceLanguage })
                                     .Select(g => g.First().GetLanguageDirection());

            foreach (var languageDirection in languageDirections)
            {
                _settings = Project.GetSettings(languageDirection.TargetLanguage).GetSettingsGroup <TargetRenamerSettings>();
                var reportName =
                    $"{PluginResources.TargetRenamer_Name}_{languageDirection.SourceLanguage.IsoAbbreviation}_{languageDirection.TargetLanguage.IsoAbbreviation}";

                var projectFiles = _projectFiles
                                   .Where(x => Equals(x.GetLanguageDirection().TargetLanguage, languageDirection.TargetLanguage)).ToList();
                _reportCreator.CreateReport(Project, projectFiles, _renamedFiles, _settings, languageDirection);

                CreateReport(reportName, PluginResources.ReportDescription, _reportCreator.ReportFile, languageDirection);
            }
        }
コード例 #3
0
        protected override void ConfigureConverter(ProjectFile projectFile, IMultiFileConverter multiFileConverter)
        {
            _projectFiles.Add(projectFile);
            _settings = Project.GetSettings(projectFile.Language).GetSettingsGroup <TargetRenamerSettings>();

            var fileIds = new List <Guid>()
            {
                projectFile.Id
            };
            var task = Project.RunAutomaticTask(fileIds.ToArray(), AutomaticTaskTemplateIds.GenerateTargetTranslations);

            if (task == null || task.Status != TaskStatus.Completed)
            {
                _logger.Error($"{task?.Messages?.FirstOrDefault()?.Message}\n The task has not been run correctly.");
            }

            var targetLanguage = new CultureInfo(projectFile.GetLanguageDirection().TargetLanguage.IsoAbbreviation);
            var files          = Project.GetTargetLanguageFiles(projectFile.GetLanguageDirection().TargetLanguage);
            var file           = files.SingleOrDefault(x => x.SourceFile.Id.Equals(projectFile.SourceFile.Id));
            var filePath       = Path.GetDirectoryName(file.LocalFilePath);
            var fileExtension  = Path.GetExtension(file.LocalFilePath);
            var fileName       = Path.GetFileNameWithoutExtension(file.LocalFilePath);
            var oldFileName    = Path.GetFileName(file.LocalFilePath);

            if (_settings.AppendAsPrefix)
            {
                fileName = CreateFileNameWithPrefix(fileName, fileExtension, targetLanguage);
            }

            if (_settings.AppendAsSuffix)
            {
                fileName = CreateFileNameWithSuffix(fileName, fileExtension, targetLanguage);
            }

            if (_settings.UseRegularExpression)
            {
                fileName = CreateFileNameWithRegularExpression(fileName, fileExtension);
            }

            try
            {
                string newFileName;
                if (_settings.UseCustomLocation)
                {
                    if (!Directory.Exists(_settings.CustomLocation))
                    {
                        Directory.CreateDirectory(_settings.CustomLocation ??
                                                  throw new InvalidOperationException("Invalid file path!"));
                    }
                    newFileName = Path.Combine(_settings.CustomLocation, targetLanguage.Name, projectFile.Folder, fileName);
                }
                else
                {
                    newFileName = Path.Combine(filePath, fileName);
                }

                _renamedFiles.Add(
                    (projectFile, projectFile.GetLanguageDirection()),
                    new Tuple <string, string>(oldFileName, fileName));

                // Ensure that the file does not exist
                if (File.Exists(newFileName))
                {
                    File.Delete(newFileName);
                }

                Directory.CreateDirectory(Path.Combine(_settings.CustomLocation, targetLanguage.Name,
                                                       projectFile.Folder));

                File.Move(file.LocalFilePath, newFileName);
            }
            catch (Exception e)
            {
                _logger.Error($"{e.Message}\n {e.StackTrace}");
            }

            RevertToSdlXliff(projectFile);
        }