public virtual void Set(string resourceName, string value, CultureInfo cultureInfo) { if (string.IsNullOrWhiteSpace(resourceName)) return; resourceName = NormalizeName(resourceName); var res = jsonResources.FirstOrDefault(o => o.CultureInfoName == cultureInfo.Name); if (res == null) { var defaultRes = jsonResources.FirstOrDefault(o => o.CultureInfoName == string.Empty); if (defaultRes != null) { res = new JsonResource() { CultureInfoName = cultureInfo.Name }; res.FileName = defaultRes.FileName.Replace(".js", string.Format(".{0}.js", cultureInfo)); res.Resources = new CaseInsensitiveDictionary(); jsonResources.Add(res); } } if (res.Resources.ContainsKey(resourceName)) { if (string.IsNullOrWhiteSpace(value)) res.Resources.Remove(resourceName); else { res.Resources[resourceName] = value; } } else { res.Resources.Add(resourceName, value); } Flush(); }
private void LoadResources(string[] paths) { if (paths == null || paths.Length <= 0) return; var files = Enumerable.Empty<File>(); foreach (var p in paths) { files = files.Union(fileProvider.GetFiles(p, "*.js", false)); } files.ForEach(o => { JsonResource jr = new JsonResource(); jr.FileName = o.RelativePath; string[] fiNames = o.NameWithoutExtension.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries); if (fiNames.Length == 2) { jr.NameSpace = fiNames[0]; jr.CultureInfoName = fiNames[1]; } else if (fiNames.Length == 1) { jr.NameSpace = fiNames[0]; jr.CultureInfoName = string.Empty; } string json = fileProvider.ReadAllText(o.RelativePath); jr.Resources = serializer.Deserialize<CaseInsensitiveDictionary>(json); if (jr.Resources == null) jr.Resources = new CaseInsensitiveDictionary(); jsonResources.Add(jr); }); }