private static Project GetProject(ProjectDescription projectDescription) { return((Project)projectDescription.Tag); }
public void ConfigureTranslationFiles(ProjectDescription projectDescription, string develepmentCulture, List <string> localizationCultures, bool localizable) { var project = GetProject(projectDescription); var translationFolder = GetFolder(project, ProjectTranslationFolder, localizable); if (translationFolder == null) { if (!localizable) { return; } throw new Exception("GetFolder didn't create folder"); } //Collect existing files var existingFiles = new Dictionary <string, ProjectItem>(); foreach (ProjectItem projectItem in translationFolder.ProjectItems) { string fileName = Path.GetFileName(projectItem.FileNames[1]); if (fileName.StartsWith(TranslationFilePrefix, StringComparison.InvariantCultureIgnoreCase) && fileName.EndsWith(TranslationFileSuffix, StringComparison.InvariantCultureIgnoreCase)) { existingFiles.Add(fileName, projectItem); } } //Prepare list of needed files var neededFiles = new List <string>(); if (localizable) { neededFiles.Add(TranslationFilePrefix + TranslationFileSuffix); //Dev culture foreach (var localizationCulture in localizationCultures) { if (localizationCulture == develepmentCulture) { continue; } neededFiles.Add(String.Format("{0}.{1}{2}", TranslationFilePrefix, localizationCulture, TranslationFileSuffix)); //Dev culture } } //Add missing files string folderPath = translationFolder.FileNames[1]; for (int i = 0; i < neededFiles.Count; i++) { var neededFile = neededFiles[i]; if (existingFiles.ContainsKey(neededFile)) { CheckTranslationFileProperties(existingFiles[neededFile], (i == 0)); existingFiles.Remove(neededFile); continue; } string fileName = Path.Combine(folderPath, neededFile); if (!File.Exists(fileName)) { var resourceFile = new ResourceFile(fileName); resourceFile.SaveFile(); } var projectItem = translationFolder.ProjectItems.AddFromFile(fileName); CheckTranslationFileProperties(projectItem, (i == 0)); } //Now existingFiles contains files to remove - Remove not needed files foreach (var existingFileEntry in existingFiles) { existingFileEntry.Value.Remove(); //Exclude from project, but leave the file } }
public bool IsProjectSaved(ProjectDescription projectDescription) { Project project = GetProject(projectDescription); return(project.Saved); }