/// <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); }
private static Hashtable GetResource(ResourceManagerType resourceType, string userLanguage, string fileName, bool defaultOnly) { string defaultLanguage = HHConfiguration.GetConfig().DefaultLanguage; string cacheKey = "HHOnline/Framework/" + resourceType.ToString() + defaultLanguage + userLanguage + fileName; if (GlobalSettings.IsNullOrEmpty(userLanguage) || defaultOnly) { userLanguage = defaultLanguage; } Hashtable resources = HHCache.Instance.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); }
private static Hashtable GetResource(ResourceManagerType resourceType, string fileName, bool defaultOnly) { string cacheKey = resourceType.ToString() + fileName; Hashtable resources = new Hashtable(); resources = LoadResource(resourceType, resources, cacheKey, fileName); return resources; }
/// <summary> /// 获取特定语言的特定资源 /// </summary> /// <param name="resourceType"></param> /// <param name="resource"></param> /// <param name="language"></param> /// <returns></returns> private static Hashtable GetResource(ResourceManagerType resourceType, string resource,string language) { HttpContext current = HttpContext.Current; string cacheKey = resourceType.ToString() + language; if (!string.IsNullOrEmpty(language)) { throw new Exception(language+"not found!"); } if (current.Cache[cacheKey] == null) { Hashtable target = new Hashtable(); LoadResource(resourceType, resource, target, language, cacheKey); } return (Hashtable)current.Cache[cacheKey]; }
/// <summary> ///获取浏览器默认语言的相应资源 /// </summary> /// <param name="resourceType"></param> /// <param name="resource"></param> /// <returns></returns> private static Hashtable GetResource(ResourceManagerType resourceType,string resource) { HttpContext current = HttpContext.Current; string language = "zh-CN"; string defaultLanguage = current.Request.UserLanguages[0].ToString(); //!容易重复 string cacheKey = resourceType.ToString() + resource; if (string.IsNullOrEmpty(defaultLanguage)) { defaultLanguage = language; } if (current.Cache[cacheKey] == null) { Hashtable target = new Hashtable(); LoadResource(resourceType, resource, target, defaultLanguage, cacheKey); //if ("zh-CN" != language) //{ // LoadResource(resourceType,resource, target, language, cacheKey); //} } return (Hashtable)current.Cache[cacheKey]; }
private static Hashtable LoadResource(ResourceManagerType resourceType, Hashtable target, string culture) { string filePath = AppPath.CorePath("Resource") + "{0}/{1}"; switch (resourceType) { case ResourceManagerType.CustomMessage: filePath = string.Format(filePath, culture, "Messages.xml"); break; case ResourceManagerType.String: filePath = string.Format(filePath, culture, "Resources.xml"); break; case ResourceManagerType.Help: filePath = string.Format(filePath, culture, "Help.xml"); break; default: filePath = string.Format(filePath, culture, "Resources.xml"); break; } if (!System.IO.File.Exists(filePath)) { throw new Exception(string.Format("File Doesn't Exists: {0}", filePath)); } FileInfo fileInfo = new FileInfo(filePath); long fileSize = fileInfo.Length; long prevSize = CustomCache.Get(string.Format("Core.Resource.Size.{0}", resourceType)).SafeLong(0); Hashtable resource = (Hashtable)CustomCache.Get(string.Format("Core.Resource.{0}", resourceType)); //resource.Count if (resource == null || fileSize != prevSize) { XmlDocument d = new XmlDocument(); try { d.Load(filePath); } catch { return(target); } var selectSingleNode = d.SelectSingleNode("root"); if (selectSingleNode != null) { foreach (XmlNode n in selectSingleNode.ChildNodes) { if (n.NodeType != XmlNodeType.Comment) { Message m; switch (resourceType) { case ResourceManagerType.CustomMessage: m = new Message(n); target[m.Name] = m; break; case ResourceManagerType.Help: m = new Message(n); target[m.Name] = m; break; case ResourceManagerType.String: if (target[n.Attributes["name"].Value.ToLower()] == null) { target.Add(n.Attributes["name"].Value.ToLower(), n.InnerText.Replace(">", ">").Replace("<", "<")); } else { target[n.Attributes["name"].Value.ToLower()] = n.InnerText.Replace(">", ">").Replace("<", "<"); } break; //m = new Message(n); //target[m.Name] = m; //break; } } } } CustomCache.Insert(string.Format("Core.Resource.{0}", resourceType.ToString()), target); CustomCache.Insert(string.Format("Core.Resource.Size.{0}", resourceType.ToString()), fileSize); return(target); } return(resource); }
private static Hashtable GetResource(ResourceManagerType resourceType, string userLanguage, string fileName) { string cacheKey = resourceType.ToString() + userLanguage + fileName; // Ensure the user has a language set // // Attempt to get the resources from the Cache Hashtable resources = Context.Cache.Get(cacheKey) as Hashtable; if (resources == null) { resources = new Hashtable(); // First load the English resouce, changed from loading the default language // since the userLanguage is set to the defaultLanguage if the userLanguage // is unassigned. We load the english language always just to ensure we have // a resource loaded just incase the userLanguage doesn't have a translated // string for this English resource. // resources = LoadResource(resourceType, resources, userLanguage, cacheKey, fileName); } return resources; }
private static Hashtable GetResource(ResourceManagerType resourceType, string userLanguage) { CSContext csContext = CSContext.Current; string defaultLanguage = CSConfiguration.GetConfig().DefaultLanguage; string cacheKey = resourceType.ToString() + defaultLanguage + userLanguage; // Ensure the user has a language set // if (userLanguage == "") userLanguage = defaultLanguage; // Attempt to get the resources from the Cache // Hashtable resources = CSCache.Get(cacheKey) as Hashtable; if (resources == null) { resources = new Hashtable(); // First load the English resouce, changed from loading the default language // since the userLanguage is set to the defaultLanguage if the userLanguage // is unassigned. We load the english language always just to ensure we have // a resource loaded just incase the userLanguage doesn't have a translated // string for this English resource. // resources = LoadResource(resourceType, resources, "en-US", cacheKey); // If the user language is different load it // if ("en-US" != userLanguage) resources= LoadResource(resourceType, resources, userLanguage, cacheKey); } return resources; }