public IEnumerable <string> GetOverriddenLanguages(string key, Site site) { if (ResourcesForSite.ContainsKey(key)) { HashSet <StringResource> stringResources = ResourcesForSite[key]; stringResources = site == null ? stringResources.FindAll(resource => resource.Site == null) : stringResources.FindAll(resource => resource.Site != null && resource.Site.Id == site.Id); return(stringResources .Select(resource => resource.UICulture) .Where(s => !string.IsNullOrWhiteSpace(s))); } return(new HashSet <string>()); }
public string GetValue(string key, string defaultValue = null) { using (MiniProfiler.Current.Step(string.Format("Getting resource - {0}", key))) { lock (LockObject) { string currentUserCulture; using (MiniProfiler.Current.Step("culture check")) { currentUserCulture = _getCurrentUserCultureInfo.GetInfoString(); } if (ResourcesForSite.ContainsKey(key)) { HashSet <StringResource> resources = ResourcesForSite[key]; using (MiniProfiler.Current.Step("Check for language")) { StringResource languageValue = resources.FirstOrDefault( resource => resource.UICulture == currentUserCulture); if (languageValue != null) { return(languageValue.Value); } } using (MiniProfiler.Current.Step("Check for default")) { StringResource existingDefault = resources.FirstOrDefault(resource => resource.UICulture == null); if (existingDefault != null) { return(existingDefault.Value); } } } using (MiniProfiler.Current.Step("default resource")) { var defaultResource = new StringResource { Key = key, Value = defaultValue ?? key }; _session.Transact(session => session.Save(defaultResource)); //AllResources[key] = new HashSet<StringResource> {defaultResource}; ResetResourceCache(); return(defaultResource.Value); } } } }