public override void UpdateFiles(LocalizationDataCollector localization)
        {
            var    items = new List <DataItem>();
            string loc   = Shell.DefaultCulture.TwoLetterISOLanguageName;

            foreach (var i in localization.Words)
            {
                items.Add(new DataItem {
                    Name = i, Value = ""
                });
            }
            foreach (var i in localization.Messages)
            {
                items.Add(new DataItem {
                    Name = i, Value = ""
                });
            }
            foreach (var i in localization.Columns)
            {
                items.Add(new DataItem {
                    Name = i, Value = ""
                });
            }
            foreach (var i in localization.Pages)
            {
                items.Add(new DataItem {
                    Name = i, Value = ""
                });
            }
            Import("Pages", loc, items, true);
        }
        public TemplateDataCollector GetCollector(HttpContext context, string viewName, string layout = null)
        {
            ActionContext actionContext = new ActionContext(context, new RouteData(), new ActionDescriptor());

            using (var sw = new StringWriter())
            {
                var viewResult = _razorViewEngine.FindView(actionContext, viewName, false);

                if (viewResult.View == null)
                {
                    throw new Exception($"{viewName} does not match any available view");
                }

                var viewDictionary = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary());

                viewDictionary["CollectViewData"] = true;
                viewDictionary["PageControls"]    = new TemplateDataCollector
                {
                    EntityName = null,
                    Controls   = new List <ControlDTO>()
                };
                viewDictionary["LocalizationDataCollector"] = new LocalizationDataCollector();


                if (layout != null)
                {
                    viewDictionary["PageOptions"] = new PageOptions
                    {
                        Layout = layout
                    };
                }

                var viewContext = new ViewContext(
                    actionContext,
                    viewResult.View,
                    viewDictionary,
                    new TempDataDictionary(actionContext.HttpContext, _tempDataProvider),
                    sw,
                    new HtmlHelperOptions()
                    );

                var t = RenderAsync(viewResult, viewContext);
                t.Wait();
                if (t.Result.Code != 200)
                {
                    throw new CodeShellHttpException(t.Result);
                }

                var data = (TemplateDataCollector)viewContext.ViewData["PageControls"];
                data.Localization = ((LocalizationDataCollector)viewContext.ViewData["LocalizationDataCollector"]);
                data.Localization.Unify();
                return(data);
            }
        }