/// <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> /// 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> /// Gets the elements. /// </summary> /// <returns></returns> public IQueryable <Element> GetElements() { locker.EnterReadLock(); try { IEnumerable <Element> elements = Enumerable.Empty <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")) { XDocument doc = XDocument.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.Union(newElements); } } } return(elements.AsQueryable <Element>()); } finally { locker.ExitReadLock(); } }
/// <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.EnterWriteLock(); try { string[] files = Directory.GetFiles(path); foreach (var file in files) { string culture1; string category1; ResXResourceFileHelper.Parse(file, out culture1, out category1); if (category.EqualsOrNullEmpty(category1, StringComparison.CurrentCultureIgnoreCase) && culture1.EqualsOrNullEmpty(culture, StringComparison.CurrentCultureIgnoreCase)) { File.Delete(file); } } return(true); } finally { locker.ExitWriteLock(); } }