Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
    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;
    }
Ejemplo n.º 4
0
        /// <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];
        }
Ejemplo n.º 5
0
        /// <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];
        }
Ejemplo n.º 6
0
        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("&gt;", ">").Replace("&lt;", "<"));
                                }
                                else
                                {
                                    target[n.Attributes["name"].Value.ToLower()] = n.InnerText.Replace("&gt;", ">").Replace("&lt;", "<");
                                }
                                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);
        }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 8
0
        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;
        }