Esempio n. 1
0
        public void FileNuggetFinder_blacklist_wildcards()
        {
            var settingService = new SettingService_Mock();
            var root           = Path.GetDirectoryName(settingService.GetConfigFileLocation());
            {
                //"*" wildcard
                settingService.SetSetting("i18n.BlackList", "./TestDir/*");
                i18nSettings settings = new i18nSettings(settingService);
                //FileNuggetFinder finder = new FileNuggetFinder(settings);
                List <string> expected = new List <string>()
                {
                    Path.Combine(root, "TestDir", "Dir02"),
                    Path.Combine(root, "TestDir", "Dir1"),
                };

                CollectionAssert.AreEqual(expected, settings.BlackList.ToList());
            }
            {
                //"?" wildcard
                settingService.SetSetting("i18n.BlackList", "./TestDir/Dir?");
                i18nSettings  settings = new i18nSettings(settingService);
                List <string> expected = new List <string>()
                {
                    Path.Combine(root, "TestDir", "Dir1"),
                };

                CollectionAssert.AreEqual(expected, settings.BlackList.ToList());
            }
        }
Esempio n. 2
0
        public ActionResult GeneratePot(int id)
        {
            string     fileName = "messages.pot";
            DBEntities db       = COREobject.i.Context;
            string     appName  = db.Applications.SingleOrDefault(a => a.Id == id).Name;
            Dictionary <string, string> data = new Dictionary <string, string>();

            foreach (Page row in db.Pages)
            {
                if ((row.ViewPath.Contains(appName + "\\Page")) || (row.ViewPath.Contains(appName + "\\menuLayout.cshtml")) || (row.ViewPath.ToString().StartsWith("/Views/App/") && Convert.ToInt32(row.ViewPath.ToString().Split('/')[3]) == id))
                {
                    data.Add(row.Id.ToString() + "-" + row.ViewName, row.ViewContent);
                }
            }

            var settings   = new i18nSettings(new WebConfigSettingService());
            var repository = new POTranslationRepository(settings);

            var nuggetFinder = new StringNuggetFinder(settings, data);
            var items        = nuggetFinder.ParseAll();

            byte[] potContent = repository.GetTemplateForDownload(items);

            Response.Clear();
            Response.ContentType = "application/force-download";
            Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
            Response.BinaryWrite(potContent);
            Response.End();

            return(View("Index"));
        }
Esempio n. 3
0
        public void FileNuggetFinder_disable_references()
        {
            var settingService = new SettingService_Mock();

            settingService.SetSetting("i18n.WhiteList", "ReferencesTest.txt");
            {
                i18nSettings     settings = new i18nSettings(settingService);
                FileNuggetFinder finder   = new FileNuggetFinder(settings);
                var templates             = finder.ParseAll();

                var item = templates.Values.First();

                Assert.AreEqual(5, item.References.Count());
            }
            {
                //Disabling references
                settingService.SetSetting("i18n.DisableReferences", "true");
                i18nSettings     settings = new i18nSettings(settingService);
                FileNuggetFinder finder   = new FileNuggetFinder(settings);
                var templates             = finder.ParseAll();

                var item = templates.Values.First();

                Assert.AreEqual(1, item.References.Count());
            }
        }
Esempio n. 4
0
 public TextLocalizer(
     i18nSettings settings,
     ITranslationRepository translationRepository)
 {
     _settings = settings;
     _translationRepository = translationRepository;
 }
Esempio n. 5
0
        public NuggetLocalizer(
            i18nSettings settings,
            ITextLocalizer textLocalizer)
        {
            _settings      = settings;
            _textLocalizer = textLocalizer;

            _nuggetParser = new NuggetParser(new NuggetTokens(
                                                 _settings.NuggetBeginToken,
                                                 _settings.NuggetEndToken,
                                                 _settings.NuggetDelimiterToken,
                                                 _settings.NuggetCommentToken),
                                             NuggetParser.Context.ResponseProcessing);
        }
Esempio n. 6
0
        public void NuggetLocalizer_can_visualize_nugget()
        {
            ITextLocalizer textLocalizer = new TextLocalizer_Mock_PrefixSuffix("xxx", "yyy");
            var            settings      = new i18nSettings(new WebConfigSettingService())
            {
                VisualizeMessages = true
            };

            i18n.NuggetLocalizer obj = new i18n.NuggetLocalizer(settings, textLocalizer);

            string pre  = "[[[123]]] [[[456]]]";
            string post = obj.ProcessNuggets(pre, languages);

            Assert.AreEqual("!xxx123yyy! !xxx456yyy!", post);
        }
Esempio n. 7
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));
            }
        }
Esempio n. 8
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.");
        }
Esempio n. 9
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.");
        }
Esempio n. 10
0
        public ActionResult Generate()
        {
            string fileName = "messages.pot";

            DBEntities db = COREobject.i.Context;
            Dictionary <string, string> data = new Dictionary <string, string>();

            foreach (Page row in db.Pages)
            {
                data.Add(row.Id.ToString() + "-" + row.ViewName, row.ViewContent);
            }

            foreach (Application app in db.Applications)
            {
                foreach (TapestryDesignerMetablock mb in db.TapestryDesignerMetablocks.Where(mb => mb.ParentAppId == app.Id))
                {
                    foreach (TapestryDesignerBlock b in mb.Blocks)
                    {
                        TapestryDesignerBlockCommit lastCommit = b.BlockCommits.OrderByDescending(c => c.Id).FirstOrDefault();
                        if (lastCommit != null)
                        {
                            foreach (TapestryDesignerWorkflowRule wf in lastCommit.WorkflowRules)
                            {
                                List <string> messages = new List <string>();
                                foreach (TapestryDesignerSwimlane sl in wf.Swimlanes)
                                {
                                    foreach (TapestryDesignerWorkflowItem item in sl.WorkflowItems)
                                    {
                                        if (item.ActionId == 182)   // Show message action
                                        {
                                            string[] vars = item.InputVariables.Split(';');
                                            foreach (string v in vars)
                                            {
                                                string[] kv = v.Split('=');
                                                if (kv.Length == 2 && kv[0] == "Message")
                                                {
                                                    if (kv[1].StartsWith("s$"))
                                                    {
                                                        messages.Add($"t._(\"{kv[1].Substring(2)}\")");
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                                if (messages.Count > 0)
                                {
                                    data.Add($"APP {app.Name} / Blok {b.Name} / Workflow {wf.Name}", string.Join(" ", messages));
                                }
                            }
                        }
                    }
                }
            }

            var settings   = new i18nSettings(new WebConfigSettingService());
            var repository = new POTranslationRepository(settings);

            var nuggetFinder = new StringNuggetFinder(settings, data);
            var items        = nuggetFinder.ParseAll();

            byte[] potContent = repository.GetTemplateForDownload(items);

            Response.Clear();
            Response.ContentType = "application/force-download";
            Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
            Response.BinaryWrite(potContent);
            Response.End();

            return(View("Index"));
        }