Пример #1
0
        static void Build(string projectDirectory, string webConfigFilename, int buildDelayMilliseconds = -1)
        {
            lock (BuildLock)
            {
                if (_isBuilding)
                {
                    return;
                }

                if (buildDelayMilliseconds > 0 &&
                    _lastBuildDate.HasValue &&
                    DateTime.Now - _lastBuildDate.Value < TimeSpan.FromMilliseconds(buildDelayMilliseconds))
                {
                    return;
                }

                _isBuilding = true;
            }

            try
            {
                var sw = new Stopwatch();
                sw.Restart();

                var settingsProvider = (ISettingsProvider) new SettingsProvider(projectDirectory);
                settingsProvider.PopulateFromWebConfig(webConfigFilename);

                var settings     = new I18NLocalizationOptions(settingsProvider);
                var repository   = new PoTranslationRepository(settings, _assemblyVersionStr);
                var nuggetFinder = new FileNuggetFinder(settings);

                var items = nuggetFinder.ParseAll();
                if (repository.SaveTemplate(items))
                {
                    var merger = new TranslationMerger(repository);
                    merger.MergeAllTranslation(items);
                }

                sw.Stop();

                Console.WriteLine($"Build operation completed in {sw.Elapsed.TotalSeconds:F} seconds.");
            }
            finally
            {
                lock (BuildLock)
                {
                    _isBuilding    = false;
                    _lastBuildDate = DateTime.Now;
                }
            }
        }
Пример #2
0
        /// <summary>
        /// This function is the callback used to execute a command when the a menu item is clicked.
        /// See the Initialize method to see how the menu item is associated to this function using
        /// the OleMenuCommandService service and the MenuCommand class.
        /// </summary>
        private void _menuItemCallback(object sender, EventArgs e)
        {
            dynamic currentProject = _getCurrentProject();

            if (currentProject != null)
            {
                var dir = new DirectoryInfo((string)currentProject.FullName).Parent;

                // ReSharper disable PossibleNullReferenceException
                var configPath = dir.FullName + "\\web.config";
                // ReSharper restore PossibleNullReferenceException. Can't be null as is being picked from project
                if (!File.Exists(configPath))
                {
                    throw new Exception("Project does not have a web.config file");
                }

                var settings = new i18nSettings(new WebConfigSettingService(configPath));
                var rep      = new POTranslationRepository(settings);

                var nugget = new FileNuggetFinder(settings);
                var items  = nugget.ParseAll();
                rep.SaveTemplate(items);

                var ts = new TranslationMerger(rep);
                ts.MergeAllTranslation(items);
                var uiShell = (IVsUIShell)GetService(typeof(SVsUIShell));
                var clsid   = Guid.Empty;
                int result;
                ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(
                                                0,
                                                ref clsid,
                                                "i18n.POTGenerator",
                                                string.Format(CultureInfo.CurrentCulture, "POT File generated correctly"),
                                                string.Empty,
                                                0,
                                                OLEMSGBUTTON.OLEMSGBUTTON_OK,
                                                OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
                                                OLEMSGICON.OLEMSGICON_INFO,
                                                0, // false
                                                out result));
            }
        }
Пример #3
0
        static void Main(string[] args)
        {
            //TestCode
            //args = new string[] {@"C:\viducate2\Viducate\Viducate.WebUI\Web.config"};

            string configPath;

            if (args.Length == 0)
            {
                System.Console.WriteLine("You have to specify path to web.config.");
                return;
            }

            try
            {
                configPath = args[0];
                using (FileStream fs = File.Open(configPath, FileMode.Open))
                {
                }
            }
            catch (Exception)
            {
                System.Console.WriteLine("Failed to open config file at path.");
                return;
            }

            //todo: this assumes PO files, if not using po files then other solution needed.
            i18nSettings            settings = new i18nSettings(new WebConfigSettingService(configPath));
            POTranslationRepository rep      = new POTranslationRepository(settings);

            FileNuggetFinder nugget = new FileNuggetFinder(settings);
            var items = nugget.ParseAll();

            rep.SaveTemplate(items);

            TranslationMerger ts = new TranslationMerger(rep);

            ts.MergeAllTranslation(items);


            Console.WriteLine("i18n.PostBuild completed successfully.");
        }
Пример #4
0
        private void Run()
        {
            ThrowIfConfigFileNotFound();

            ReferenceContext.ShowSourceContext = ShowSourceContext;

            //todo: this assumes PO files, if not using po files then other solution needed.
            var settings   = new i18nSettings(new WebConfigSettingService(ConfigPath));
            var repository = new POTranslationRepository(settings);

            var nuggetFinder = new FileNuggetFinder(settings);
            var items        = nuggetFinder.ParseAll();

            repository.SaveTemplate(items);

            var merger = new TranslationMerger(repository);

            merger.MergeAllTranslation(items);

            Console.WriteLine("i18n.PostBuild completed successfully.");
        }