private void Start(string curIn, string curOut, params string[] langs)
        {
            var files = Directory.GetFiles(curIn);
            var seri  = new XmlSerializer(typeof(root));

            foreach (var file in files)
            {
                var l = new LocalizeStringScanner(file);
                if (l.HasLocalizer())
                {
                    foreach (var lang in langs)
                    {
                        var  outFile  = FileNameToResxName(file, curOut, lang);
                        var  names    = File.Exists(outFile) ? outFile.DeSeriXML <root>() : l.AllLocalization(_findFileds).Distinct().ToList().MapToroot();
                        root newNames = new root();
                        if (File.Exists(outFile))
                        {
                            newNames = l.AllLocalization(_findFileds)
                                       .Distinct()
                                       .Where(i => names.data.All(j => j.name != i && j.Generated != i))
                                       .MapToroot();
                            names.data.AddRange(newNames.data);
                        }
                        if (names.data.Any())
                        {
                            var updatedCount = 0;
                            foreach (var name in names.data.Where(i => i.value == i.Generated))
                            {
                                var newValue = KnownValues.GetValue(lang, name.name);
                                if (newValue != name.Generated)
                                {
                                    name.value = newValue;
                                    updatedCount++;
                                }
                            }
                            Console.WriteLine($"{Path.GetRelativePath(_projectRoot, file)}: {newNames.data?.Count() ?? names.data.Count()}+ {names.data.Count()}= {updatedCount}^");
                            if ((newNames.data?.Count() ?? names.data.Count()) > 0 || updatedCount != 0)
                            {
                                Directory.CreateDirectory(curOut);
                                //Console.WriteLine($"Writing to: {Path.GetRelativePath(_outputRoot, outFile)}");
                                seri.Serialize(System.Xml.XmlWriter.Create(File.Create(outFile), new System.Xml.XmlWriterSettings {
                                    Encoding = Encoding.UTF8, Indent = true
                                }), names);
                            }
                        }
                        //Console.WriteLine($"Done with: {file}");
                        //Console.WriteLine(new string('-', Console.WindowWidth));
                    }
                }
            }
            foreach (var dir in Directory.GetDirectories(curIn).Where(i => i.IndexOf("node_modu") == -1))
            {
                var newpartOfPath = dir.Split('\\', StringSplitOptions.RemoveEmptyEntries).Last();
                Start(dir, Path.Combine(curOut, newpartOfPath), langs);
            }
        }