コード例 #1
0
        public void UpdateTranslationFiles()
        {
            progress.OperationDescription = "Updating translation files";
            progress.StepDescription      = String.Format("Preparing files list...");
            progress.CurrentStep          = 0;

            var projects = visualStudioAdapter.GetProjects().Where(projDescr => settingsService.IsProjectHandled(projDescr)).ToList();
            var settings = settingsService.GetSolutionSettings();
            var cultures = new List <string>();

            cultures.Add(settings.DevelepmentCulture);
            cultures.AddRange(settings.LocalizationCultures.Where(cul => cul != settings.DevelepmentCulture));
            progress.TotalSteps = projects.Count * cultures.Count;

            foreach (var projDescr in projects)
            {
                var resources = bamlResourceCollector.GetResources(projDescr);
                if (resources == null)
                {
                    continue;                    //Skip projects without localizable resources
                }
                for (int i = 0; i < cultures.Count; i++)
                {
                    var    culture      = cultures[i];
                    bool   isDevCulture = (i == 0);
                    string fileName     = isDevCulture ? "Translate.resx" : String.Format("Translate.{0}.resx", culture);
                    progress.StepDescription = String.Format("Processing Project: {0}, File: {1}", projDescr.Name, fileName);

                    var resourceFile = visualStudioAdapter.GetTranslationFile(projDescr, fileName);

                    UpdateResourceFile(resources, resourceFile, isDevCulture, settings.DevelepmentCulture);
                }
            }

            progress.CurrentStep          = progress.TotalSteps;
            progress.OperationDescription = "Updating translation files complete";
            progress.StepDescription      = "";
        }