/// <summary> /// Removes the resource. /// </summary> /// <param name="element">The element.</param> /// <returns></returns> public bool RemoveResource(Element element) { locker.AcquireWriterLock(Timeout.Infinite); try { CreateDir(); string filePath = Path.Combine(this.path, ResXResourceFileHelper.GetFileName(element.Category, element.Culture)); XmlDocument document = GetResxDocument(filePath); if (document == null) { return(false); } var newElement = document.Root.Elements("data") .FirstOrDefault(d => d.Attribute("name").Value.EqualsOrNullEmpty(element.Name, StringComparison.OrdinalIgnoreCase)); if (newElement == null) { return(false); } newElement.Remove(); document.Save(filePath); return(true); } finally { locker.ReleaseWriterLock(); } }
/// <summary> /// Gets the element. /// </summary> /// <param name="name">The name.</param> /// <param name="category">The category.</param> /// <param name="culture">The culture.</param> /// <returns></returns> public Element GetElement(string name, string category, string culture) { locker.AcquireReaderLock(Timeout.Infinite); try { string filePath = Path.Combine(this.path, ResXResourceFileHelper.GetFileName(category, culture)); XDocument document = GetResxDocument(filePath); if (document == null) { return(null); } return(document.Root.Elements("data") .Where(it => it.Attribute("name").Value.EqualsOrNullEmpty(name, StringComparison.OrdinalIgnoreCase)) .Select(it => new Element() { Name = it.Attribute("name").Value, Value = it.Element("value").Value, Category = category, Culture = culture }).FirstOrDefault()); } finally { locker.ReleaseReaderLock(); } }
/// <summary> /// Adds the resource. /// </summary> /// <param name="element">The element.</param> public void AddResource(Element element) { locker.AcquireWriterLock(Timeout.Infinite); try { CreateDir(); string filePath = Path.Combine(this.path, ResXResourceFileHelper.GetFileName(element.Category, element.Culture)); XDocument document = GetResxDocument(filePath); if (document == null) { document = CreateResXDocument(); } var exists = document.Root.Elements("data") .FirstOrDefault(d => d.Attribute("name").Value == element.Name); if (exists == null) { document.Root.Add( new XElement("data", new XAttribute("name", element.Name), new XAttribute(XNamespace.Xml + "space", "preserve"), new XElement("value", element.Value))); document.Save(filePath); } } finally { locker.ReleaseWriterLock(); } }
/// <summary> /// Gets the cultures. /// </summary> /// <returns></returns> public IEnumerable <CultureInfo> GetCultures() { if (Directory.Exists(path)) { string[] files = Directory.GetFiles(path); foreach (var file in files) { string culture; string category; ResXResourceFileHelper.Parse(file, out culture, out category); if (!string.IsNullOrEmpty(culture)) { yield return(new CultureInfo(culture)); } } } }
/// <summary> /// Adds the category. /// </summary> /// <param name="category">The category.</param> /// <param name="culture">The culture.</param> public void AddCategory(string category, string culture) { string filePath = Path.Combine(this.path, ResXResourceFileHelper.GetFileName(category, culture)); XmlDocument document = GetResxDocument(filePath); if (document == null) { document = CreateResXDocument(); } locker.AcquireWriterLock(Timeout.Infinite); try { document.Save(filePath); } finally { locker.ReleaseWriterLock(); } }
/// <summary> /// Gets the elements. /// </summary> /// <returns></returns> public IEnumerable <Element> GetElements() { locker.AcquireWriterLock(Timeout.Infinite); try { IEnumerable <Element> elements = new List <Element>(); if (Directory.Exists(path)) { string[] files = Directory.GetFiles(path); for (int i = 0; i < files.Length; i++) { string fileName = files[i]; if (fileName.EndsWith(".resx")) { XmlDocument doc = new XmlDocument(); doc.Load(files[i]); string culture; string category; ResXResourceFileHelper.Parse(fileName, out culture, out category); IEnumerable <Element> newElements = doc.Root.Elements("data") .Select(x => new Element() { Category = category, Culture = culture, Name = x.Attribute("name").Value, Value = x.Element("value").Value }); elements = elements.(newElements); } } } return(elements); } finally { locker.ReleaseWriterLock(); } }
/// <summary> /// Gets the categories. /// </summary> /// <returns></returns> public IEnumerable <ElementCategory> GetCategories() { if (Directory.Exists(path)) { string[] files = Directory.GetFiles(path); foreach (var file in files) { string culture; string category; ResXResourceFileHelper.Parse(file, out culture, out category); if (!string.IsNullOrEmpty(category)) { yield return(new ElementCategory() { Category = category, Culture = culture }); } } } }
/// <summary> /// Removes the category. /// </summary> /// <param name="category">The category.</param> /// <param name="culture">The culture.</param> /// <returns></returns> public bool RemoveCategory(string category, string culture) { locker.AcquireWriterLock(Timeout.Infinite); try { string[] files = Directory.GetFiles(path); foreach (var file in files) { string culture1; string category1; ResXResourceFileHelper.Parse(file, out culture1, out category1); if (StringExtensions.EqualsOrNullEmpty(category, category1, StringComparison.CurrentCultureIgnoreCase) && StringExtensions.EqualsOrNullEmpty(culture1, culture, StringComparison.CurrentCultureIgnoreCase)) { File.Delete(file); } } return(true); } finally { locker.ReleaseWriterLock(); } }