private object GetObjectInternal(string resourceKey, string cultureName) { IDictionary resources = this.GetResourceCache(cultureName); object value = null; if (resources == null) { value = null; } else { value = resources[resourceKey]; } // If we're at a specific culture (en-US) and there's no value, then fall back // to the generic culture (en) if (value == null && cultureName.Length > 3) { // Try again with the 2 letter locale value = GetObjectInternal(resourceKey, cultureName.Substring(0, 2)); } // If the value is still null get the invariant value if (value == null && cultureName.Length > 0) { value = GetObjectInternal(resourceKey, CultureInfo.InvariantCulture.Name); } // If the value is still null and we're at the invariant culture // fallback to default resource provider if (value == null && string.IsNullOrEmpty(cultureName)) { IResourceProvider resxProvider; string typeName = "System.Web.Compilation.ResXResourceProviderFactory, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; ResourceProviderFactory factory = (ResourceProviderFactory)Activator.CreateInstance(Type.GetType(typeName)); if (FactoryType == ResxFactoryType.Global) { resxProvider = factory.CreateGlobalResourceProvider(originalClassName); } else { resxProvider = factory.CreateLocalResourceProvider(originalClassName); } value = resxProvider.GetObject(resourceKey, new CultureInfo(cultureName)); (_resourceCache[cultureName] as Dictionary <string, object>).Add(resourceKey, value); } Debug.WriteLine(resourceKey, "Key"); Debug.WriteLine(value, "Value"); Debug.WriteLine(className, "Path"); return(value); }
internal static IResourceProvider GetResourceProvider(string virtualPath, bool isLocal) { if (!EnsureProviderFactory()) { return(null); } // TODO: check if it makes sense to cache the providers and, if yes, maybe // we should expire the entries (or just store them in InternalCache?) IResourceProvider rp = null; if (!resource_providers.TryGetValue(virtualPath, out rp)) { if (isLocal) { HttpContext ctx = HttpContext.Current; HttpRequest req = ctx != null ? ctx.Request : null; rp = provider_factory.CreateLocalResourceProvider(virtualPath); } else { rp = provider_factory.CreateGlobalResourceProvider(virtualPath); } if (rp == null) { if (isLocal) { HttpContext ctx = HttpContext.Current; HttpRequest req = ctx != null ? ctx.Request : null; rp = DefaultProviderFactory.CreateLocalResourceProvider(virtualPath); } else { rp = DefaultProviderFactory.CreateGlobalResourceProvider(virtualPath); } if (rp == null) { return(null); } } resource_providers.Add(virtualPath, rp); } return(rp); }