예제 #1
0
        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();
        }
예제 #2
0
        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);
            });
        }