private NameValueCollection GetResources() { string currentCulture = ResourceManager.CurrentCultureName; string defaultCulture = LocalizationConfiguration.GetConfig().DefaultCultureName; string userInterface = HttpContext.Current.Request.ServerVariables["URL"]; bool languagePreviewMode = false; if (HttpContext.Current.Request.Cookies["LanguagePreviewMode"] != null) { languagePreviewMode = (HttpContext.Current.Request.Cookies["LanguagePreviewMode"].Value.ToString() == "1"); } string cacheKey = string.Empty; NameValueCollection resources = new NameValueCollection(); string sqlSelect = @"SELECT LangInterfaceName from tblLangInterface WHERE LangInterfaceName = @LangInterfaceName OR LangInterfaceName LIKE 'GLOBAL.%' " ; SqlParameter[] sqlParams = { new SqlParameter("@LangInterfaceName", userInterface) }; DataTable dtInterface = SqlHelper.ExecuteDataset(connectionString, CommandType.Text, sqlSelect, sqlParams).Tables[0]; foreach (DataRow drInterface in dtInterface.Rows) { string interfaceToLoad = drInterface["LangInterfaceName"].ToString(); cacheKey = "SQLLocalization:" + defaultCulture + ':' + currentCulture + ':' + interfaceToLoad + ":" + languagePreviewMode.ToString(); NameValueCollection currentResource = (NameValueCollection)HttpRuntime.Cache[cacheKey]; if (currentResource == null) { currentResource = LoadResources(defaultCulture, currentCulture, interfaceToLoad, languagePreviewMode); //-- Both committed and uncommited are cached here HttpRuntime.Cache.Insert(cacheKey, resources, null, DateTime.Now.AddMinutes(cacheDuration), Cache.NoSlidingExpiration); } foreach (string name in currentResource.AllKeys) { //-- Because we may have uncommitted values, the sql is sorted to load those up first, if a committed version comes along, to not load it. if (resources[name] == null) { resources.Add(name, currentResource[name].ToString()); } } } return(resources); }
protected override void Render(HtmlTextWriter writer) { LocalizedImageData data = ResourceManager.GetImage(key); if (data != null) { base.Src = string.Format(imageUrlFormat, LocalizationConfiguration.GetConfig().ImagePath, ResourceManager.CurrentCultureName, base.Src); base.Width = data.Width; base.Height = data.Height; base.Alt = data.Alt; } if (colon) { base.Alt += ResourceManager.Colon; } base.Render(writer); }
private NameValueCollection GetResources() { string currentCulture = ResourceManager.CurrentCultureName; string defaultCulture = LocalizationConfiguration.GetConfig().DefaultCultureName; string cacheKey = "Localization:" + defaultCulture + ':' + currentCulture; if (HttpRuntime.Cache[cacheKey] == null) { NameValueCollection resource = new NameValueCollection(); LoadResources(resource, defaultCulture, cacheKey); if (defaultCulture != currentCulture) { try { LoadResources(resource, currentCulture, cacheKey); } catch (FileNotFoundException) {} } } return((NameValueCollection)HttpRuntime.Cache[cacheKey]); }
private Hashtable GetImages() { string currentCulture = ResourceManager.CurrentCultureName; string defaultCulture = LocalizationConfiguration.GetConfig().DefaultCultureName; string cacheKey = "LocalizationImage:" + defaultCulture + ':' + currentCulture; if (HttpRuntime.Cache[cacheKey] == null) { Hashtable resource = new Hashtable(); LoadImage(resource, defaultCulture, cacheKey); if (defaultCulture != currentCulture) { try { LoadImage(resource, currentCulture, cacheKey); } catch (FileNotFoundException) {} } } return((Hashtable)HttpRuntime.Cache[cacheKey]); }
private void LoadCulture(ref string path) { string[] pathParts = path.Trim('/').Split('/'); string defaultCulture = LocalizationConfiguration.GetConfig().DefaultCultureName; if (pathParts.Length > 0 && pathParts[0].Length > 0) { try { Thread.CurrentThread.CurrentCulture = new CultureInfo(pathParts[0]); path = path.Remove(0, pathParts[0].Length + 1); }catch (Exception ex) { if (!(ex is ArgumentNullException) && !(ex is ArgumentException)) { throw; } Thread.CurrentThread.CurrentCulture = new CultureInfo(defaultCulture); } } else { Thread.CurrentThread.CurrentCulture = new CultureInfo(defaultCulture); } Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; }