public void SetResxInfo(string fileName) { Clear(); using (ResXResourceReader reader = new ResXResourceReader(fileName)) { reader.UseResXDataNodes = true; reader.BasePath = IOPath.GetDirectoryName(fileName); resxBaseName = reader.BasePath; try { foreach (var value in reader .OfType <DictionaryEntry>() .Select(en => (ResXDataNode)en.Value) .OrderBy(value => value.Name)) { AddItem(value); } } catch (ArgumentException) { } } }
private void Initialize() { try { ResXResourceReader reader = new ResXResourceReader(m_filename); IEnumerable <DictionaryEntry> enumerator = reader.OfType <DictionaryEntry>(); if (enumerator == null) { m_entriesInitialized = false; } else { m_entries = (from ent in enumerator select new ResourceEntry(ent)).ToList(); m_totalCharacterCount = (int)m_entries.Sum(w => w.OriginalValue.Length); m_entriesInitialized = true; } reader.Close(); } catch { m_entriesInitialized = false; } }
public void CreateNewTranslation() { const string NewLanguage = ".es.resx"; var nlFiles = Directory.GetFiles(@"C:\code\TribalWars\TWTactics\TribalWars", "*.nl.resx", SearchOption.AllDirectories); foreach (var nlFile in nlFiles) { var nlRes = new ResXResourceReader(nlFile); var engRes = new ResXResourceReader(nlFile.Replace(".nl.resx", ".resx")); //var newFileName = nlFile.Replace(".nl.resx", NewLanguage); //var newFile = File.Create(newFileName); //var newRes = new ResXResourceWriter(newFile); if (IsFormResx(nlFile)) { } Debug.WriteLine(""); Debug.WriteLine(""); Debug.WriteLine(""); Debug.WriteLine(nlFile); Debug.WriteLine("-------------------------------------------"); foreach (DictionaryEntry entry in nlRes.OfType <DictionaryEntry>().Where(IsRelevant)) { Debug.WriteLine(entry.Key + ": " + entry.Value); } } }
private Dictionary <string, string> GetResources(ModuleInfo module) { var currentLanguage = System.Threading.Thread.CurrentThread.CurrentCulture.Name; System.IO.FileInfo fi = new System.IO.FileInfo(HttpContext.Current.Server.MapPath(string.Format(Constants.Properties.LOCALIZATION_PATH_FORMAT, _moduleContext.Configuration.ModuleControl.ControlSrc, currentLanguage))); string physResourceFile = string.Format(Constants.Properties.PHYSICAL_FILE_FORMAT, fi.DirectoryName, Constants.Resources, fi.Name); string relResourceFile = string.Format(Constants.Properties.RELATIVE_FILE_FORMAT, Constants.DesktopModules, module.DesktopModule.FolderName, Constants.Resources, fi.Name); if (File.Exists(physResourceFile)) { using (var rsxr = new ResXResourceReader(physResourceFile)) { var res = rsxr.OfType <DictionaryEntry>() .ToDictionary( entry => entry.Key.ToString().Replace(Constants.DOT, Constants.UNDERSCORE), entry => Localization.GetString(entry.Key.ToString(), relResourceFile)); return(res); } } return(new Dictionary <string, string>()); }
private Dictionary <string, string> GetResources(ModuleInfo module) { var currentLanguage = System.Threading.Thread.CurrentThread.CurrentCulture.Name; System.IO.FileInfo fi = new System.IO.FileInfo(HttpContext.Current.Server.MapPath("~/" + _moduleContext.Configuration.ModuleControl.ControlSrc + "." + currentLanguage + ".resx")); //System.IO.FileInfo fi = new System.IO.FileInfo(HttpContext.Current.Server.MapPath("~/" + _moduleContext.Configuration.ModuleControl.ControlSrc + ".resx")); string physResourceFile = fi.DirectoryName + "/App_LocalResources/" + fi.Name; string relResourceFile = "/DesktopModules/" + module.DesktopModule.FolderName + "/App_LocalResources/" + fi.Name; if (File.Exists(physResourceFile)) { using (var rsxr = new ResXResourceReader(physResourceFile)) { var res = rsxr.OfType <DictionaryEntry>() .ToDictionary( entry => entry.Key.ToString().Replace(".", "_"), entry => Localization.GetString(entry.Key.ToString(), relResourceFile)); return(res); } } return(new Dictionary <string, string>()); }
public static bool Export(IServiceProvider serviceProvider, string project, string module, string fName, string language, string exportPath, string key = null) { var filter = new ResCurrent { Project = new ResProject { Name = project }, Module = new ResModule { Name = module }, Language = new ResCulture { Title = language }, Word = new ResWord() { ResFile = new ResFile() { FileName = fName } } }; using var scope = serviceProvider.CreateScope(); var resourceData = scope.ServiceProvider.GetService <ResourceData>(); var words = resourceData.GetListResWords(filter, string.Empty).GroupBy(x => x.ResFile.FileID).ToList(); if (!words.Any()) { Console.WriteLine($"db empty file:{fName}, lang:{language}"); return(false); } foreach (var fileWords in words) { var wordsDictionary = new Dictionary <string, object>(); var firstWord = fileWords.FirstOrDefault(); var fileName = firstWord == null ? module : Path.GetFileNameWithoutExtension(firstWord.ResFile.FileName); var zipFileName = Path.Combine(exportPath, $"{fileName}{(language == "Neutral" ? string.Empty : "." + language)}.resx"); var dirName = Path.GetDirectoryName(zipFileName); if (!Directory.Exists(dirName)) { Directory.CreateDirectory(dirName); } var toAdd = new List <ResWord>(); var toAddFiles = new Dictionary <string, ResXFileRef>(); if (!string.IsNullOrEmpty(key)) { var keys = key.Split(",").Distinct(); if (File.Exists(zipFileName)) { using var resXResourceReader = new ResXResourceReader(zipFileName); resXResourceReader.BasePath = Path.GetDirectoryName(zipFileName); resXResourceReader.UseResXDataNodes = true; foreach (var v in resXResourceReader.OfType <DictionaryEntry>()) { var k = v.Key.ToString(); var val = v.Value as ResXDataNode; if (keys.Any()) { if (val.FileRef != null) { var fileRef = new ResXFileRef(Path.GetFileName(val.FileRef.FileName), val.FileRef.TypeName); toAddFiles.Add(k, fileRef); } else { if (!keys.Any(r => r.EndsWith("*") && k.StartsWith(r.Replace("*", ""))) && (!k.Contains("_") || k.StartsWith("subject_") || k.StartsWith("pattern_"))) { k = keys.FirstOrDefault(r => r == k); } if (k != null) { var word = fileWords.FirstOrDefault(r => r.Title == k); if (word != null) { toAdd.Add(word); } else { toAdd.Add(new ResWord() { Title = k, ValueTo = val.GetValue((ITypeResolutionService)null)?.ToString() }); } } } } else { if (val.FileRef != null) { var fileRef = new ResXFileRef(Path.GetFileName(val.FileRef.FileName), val.FileRef.TypeName); toAddFiles.Add(k, fileRef); } else { toAdd.Add(new ResWord { Title = k, ValueTo = val.GetValue((ITypeResolutionService)null)?.ToString() }); } } } } foreach (var k in keys) { if (!toAdd.Any(r => r.Title == k)) { var exists = fileWords.FirstOrDefault(r => r.Title == k); if (exists != null) { toAdd.Add(exists); } } } } else { if (File.Exists(zipFileName)) { using var resXResourceReader = new ResXResourceReader(zipFileName); resXResourceReader.BasePath = Path.GetDirectoryName(zipFileName); resXResourceReader.UseResXDataNodes = true; foreach (var v in resXResourceReader.OfType <DictionaryEntry>()) { var k = v.Key.ToString(); var val = v.Value as ResXDataNode; if (val.FileRef != null) { var fileRef = new ResXFileRef(Path.GetFileName(val.FileRef.FileName), val.FileRef.TypeName); toAddFiles.Add(k, fileRef); } } } toAdd.AddRange(fileWords.Where(word => !wordsDictionary.ContainsKey(word.Title))); } using var resXResourceWriter = new ResXResourceWriter(zipFileName); foreach (var word in toAdd.Where(r => r != null && (!string.IsNullOrEmpty(r.ValueTo) || language == "Neutral")).OrderBy(x => x.Title)) { resXResourceWriter.AddResource(word.Title, word.ValueTo); } foreach (var f in toAddFiles) { resXResourceWriter.AddResource(new ResXDataNode(f.Key, f.Value)); } resXResourceWriter.Generate(); resXResourceWriter.Close(); } return(true); }