/// <summary> /// 获取资源 /// </summary> /// <param name="resourceType">资源类型</param> /// <param name="userLanguage">用户语言</param> /// <param name="fileName">资源文件名</param> /// <param name="defaultOnly">只使用默认语言</param> /// <returns></returns> private static Hashtable GetResource(ResourceManagerType resourceType, string userLanguage, string fileName, bool defaultOnly) { string defaultLanguage = ResourceManager.defaultLanguage; string cacheKey = resourceType.ToString() + defaultLanguage + userLanguage + fileName; // 如果用户没有定制语言,则使用默认 // if (string.IsNullOrEmpty(userLanguage) || defaultOnly) { userLanguage = defaultLanguage; } // 从缓存中获取资源 // Hashtable resources = CustomCache.Get(cacheKey) as Hashtable; if (resources == null) { resources = new Hashtable(); resources = LoadResource(resourceType, resources, defaultLanguage, cacheKey, fileName); // 如果用户设置了语言则加载用户语言资源 // if (defaultLanguage != userLanguage) { resources = LoadResource(resourceType, resources, userLanguage, cacheKey, fileName); } } return(resources); }
/// <summary> /// 从语言声明文件中获取支持的所有语言 /// </summary> /// <returns>支持的所有语言的名称-值对</returns> public static NameValueCollection GetSupportedLanguages() { //CSContext csContext = CSContext.Current; HttpContext csContext = HttpContext.Current; string cacheKey = "SupportedLanguages"; NameValueCollection supportedLanguages = CustomCache.Get(cacheKey) as NameValueCollection; if (supportedLanguages == null) { string filePath = csContext.Server.MapPath("~/Languages/languages.xml"); CacheDependency dp = new CacheDependency(filePath); supportedLanguages = new NameValueCollection(); XmlDocument d = new XmlDocument(); d.Load(filePath); foreach (XmlNode n in d.SelectSingleNode("root").ChildNodes) { if (n.NodeType != XmlNodeType.Comment) { supportedLanguages.Add(n.Attributes["key"].Value, n.Attributes["name"].Value); } } CustomCache.Max(cacheKey, supportedLanguages, dp); } return(supportedLanguages); }
/// <summary> /// 获取资源 /// </summary> /// <param name="fileName"></param> /// <returns></returns> private Hashtable GetResource(string fileName) { string cacheKey = fileName; // 从缓存中获取资源 Hashtable resources = CustomCache.Get(cacheKey) as Hashtable; if (resources == null) { resources = new Hashtable(); resources = LoadResource(resources, cacheKey, fileName); } return(resources); }
/// <summary> /// 获取语言字符集 /// </summary> /// <returns></returns> public static NameValueCollection GetLanguageCharsets() { HttpContext csContext = HttpContext.Current; string cacheKey = "LanguageCharsets"; NameValueCollection languageCharsets = CustomCache.Get(cacheKey) as NameValueCollection; if (languageCharsets == null) { string filePath = csContext.Server.MapPath("~/Languages/languages.xml"); CacheDependency dp = new CacheDependency(filePath); languageCharsets = new NameValueCollection(); XmlDocument d = new XmlDocument(); d.Load(filePath); foreach (XmlNode n in d.SelectSingleNode("root").ChildNodes) { if (n.NodeType != XmlNodeType.Comment) { if (n.Attributes["emailCharset"] == null) { continue; } string codepage = n.Attributes["emailCharset"].Value; if (n.Attributes["emailSubjectCharset"] != null) { codepage += "," + n.Attributes["emailSubjectCharset"].Value; } languageCharsets.Add(n.Attributes["key"].Value, codepage); } } CustomCache.Max(cacheKey, languageCharsets, dp); } return(languageCharsets); }