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()); } }
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")); }
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()); } }
public TextLocalizer( i18nSettings settings, ITranslationRepository translationRepository) { _settings = settings; _translationRepository = translationRepository; }
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); }
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); }
/// <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)); } }
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."); }
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."); }
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")); }