获取所有具有lang扩展名的资源文件

时间:2016-10-11 15:43:41

标签: c# asp.net asp.net-mvc

我有一些资源,如:

  • JsResources.resx
  • JsResources.fr.resx
  • JsResources.en.resx

在JsResources是我的默认资源的地方,.fr.resx是法语UICulture和.en.resx在英语资源中的资源。

所有内容都与Razor正确绑定

我想检索所有资源并将其转换为Javascript资源。 我可以获得默认的resx资源,但不能获得另外两个(.fr.resx和.en.resx)

这是我的实际代码:

var resourceDictionary = new Dictionary<string, string>();

            var lang = file.IncludedVirtualPath.Replace(".resx", string.Empty).Split('/').Last().Split('.').Last();

            var filename = file.IncludedVirtualPath.Replace(".resx", string.Empty).Split('/').Last().Split('.').First();

            var resource = GetType()
                .Assembly.GetManifestResourceNames()
                .FirstOrDefault(t => t.Contains($"{filename}.{lang}.resources"));

            if(resource != null)
            {
                using (var stream = GetType().Assembly.GetManifestResourceStream(resource))
                using (var reader = new ResourceReader(stream))
                {
                    foreach (DictionaryEntry entry in reader)
                    {
                        resourceDictionary.Add(entry.Key.ToString(), entry.Value.ToString());
                    }
                }
            }
            var serializedDictionary = JsonConvert.SerializeObject(resourceDictionary);

            var javascript = $"var Resources = Resources || {{}};Resources.{lang}.{filename} = {serializedDictionary}";

如果我这样做:

var resourceList = GetType()
            .Assembly.GetManifestResourceNames().ToList();

我可以获得默认资源(JsResources.resx),但不能获得其他两个资源。

我怎样才能做到这一点?

由于

0 个答案:

没有答案