private static Model.ProjectFile GetProjectFile(Project project, ProjectFile projectFile, Language targetLanguage, IReadOnlyCollection <string> selectedFileIds) { var projectFileModel = new Model.ProjectFile { ProjectId = project.Id, FileId = projectFile.Id.ToString(), Name = projectFile.Name, Path = projectFile.Folder, Location = projectFile.LocalFilePath, Action = Enumerators.Action.None, Status = Enumerators.Status.Ready, Date = DateTime.MinValue, TargetLanguage = targetLanguage.CultureInfo.Name, Selected = selectedFileIds != null && selectedFileIds.Any(a => a == projectFile.Id.ToString()), FileType = projectFile.FileTypeId, Project = project }; return(projectFileModel); }
protected override void ConfigureConverter(ProjectFile projectFile, IMultiFileConverter multiFileConverter) { var languageName = projectFile.Language.CultureInfo.Name; var targetFile = _wizardContext.ProjectFiles.FirstOrDefault(a => a.FileId == projectFile.Id.ToString() && a.TargetLanguage == languageName); if (targetFile != null) { if (!targetFile.Selected) { return; } targetFile.Location = Path.Combine(targetFile.Project.Path, targetFile.Location.Trim('\\')); if (string.IsNullOrEmpty(_currentLanguage) || languageName != _currentLanguage) { _logReport.AppendLine(); _logReport.AppendLine(string.Format(PluginResources.Label_Language, languageName)); _currentLanguage = languageName; } var sdlxliffReader = new SdlxliffReader(_segmentBuilder, _exportSettings.ExportOptions, GetAnalysisBands(Project as FileBasedProject)); var xliffWriter = new XliffWriter(_exportSettings.ExportOptions.XliffSupport); var dateTimeStampToString = GetDateTimeStampToString(_exportSettings.DateTimeStamp); var workingFolder = Path.Combine(_exportSettings.TransactionFolder, dateTimeStampToString); var languageFolder = Path.Combine(workingFolder, languageName); var xliffFolder = GetXliffFolder(languageFolder, targetFile); var xliffFilePath = Path.Combine(xliffFolder, targetFile.Name + ".xliff"); _logReport.AppendLine(string.Format(PluginResources.label_SdlXliffFile, targetFile.Location)); _logReport.AppendLine(string.Format(PluginResources.label_XliffFile, xliffFilePath)); try { var xliffData = sdlxliffReader.ReadFile(_projectInfo.Id.ToString(), targetFile.Location); var exported = xliffWriter.WriteFile(xliffData, xliffFilePath, _exportSettings.ExportOptions.IncludeTranslations); if (exported) { targetFile.Date = new DateTime(_exportSettings.DateTimeStamp.Ticks, DateTimeKind.Utc); targetFile.Action = Enumerators.Action.Export; targetFile.Status = Enumerators.Status.Success; targetFile.XliffFilePath = xliffFilePath; targetFile.ConfirmationStatistics = sdlxliffReader.ConfirmationStatistics; targetFile.TranslationOriginStatistics = sdlxliffReader.TranslationOriginStatistics; } var activityFile = new ProjectFileActivity { ProjectFileId = targetFile.FileId, ProjectFile = targetFile, ActivityId = Guid.NewGuid().ToString(), Action = Enumerators.Action.Export, Status = exported ? Enumerators.Status.Success : Enumerators.Status.Error, Date = targetFile.Date, Name = Path.GetFileName(targetFile.XliffFilePath), Path = Path.GetDirectoryName(targetFile.XliffFilePath), ConfirmationStatistics = targetFile.ConfirmationStatistics, TranslationOriginStatistics = targetFile.TranslationOriginStatistics }; targetFile.ProjectFileActivities.Add(activityFile); if (!exported) { _isError = true; } _logReport.AppendLine(string.Format(PluginResources.Label_Success, exported)); _logReport.AppendLine(); } catch (Exception ex) { _logReport.AppendLine(); _logReport.AppendLine(string.Format(PluginResources.label_ExceptionMessage, ex.Message)); throw; } } }