コード例 #1
0
 private static Project GetProject(ProjectDescription projectDescription)
 {
     return((Project)projectDescription.Tag);
 }
コード例 #2
0
        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
            }
        }
コード例 #3
0
        public bool IsProjectSaved(ProjectDescription projectDescription)
        {
            Project project = GetProject(projectDescription);

            return(project.Saved);
        }