Exemple #1
0
        /// <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);
        }
Exemple #2
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);
        }
Exemple #3
0
        /// <summary>
        /// 加载资源
        /// </summary>
        /// <param name="resourceType"></param>
        /// <param name="target"></param>
        /// <param name="language"></param>
        /// <param name="cacheKey"></param>
        /// <param name="fileName"></param>
        /// <returns></returns>
        private static Hashtable LoadResource(ResourceManagerType resourceType, Hashtable target, string language, string cacheKey, string fileName)
        {
            HttpContext csContext = HttpContext.Current;

            string filePath = csContext.Server.MapPath("~/Languages/" + language + "/" + fileName);

            //switch (resourceType)
            //{
            //    case ResourceManagerType.ErrorMessage:
            //        filePath = string.Format(filePath, "Messages.xml");
            //        break;

            //    default:
            //        filePath = string.Format(filePath, "Resources.xml");
            //        break;
            //}

            CacheDependency dp = new CacheDependency(filePath);

            XmlDocument d = new XmlDocument();

            try
            {
                d.Load(filePath);
            }
            catch
            {
                return(target);
            }
            foreach (XmlNode n in d.SelectSingleNode("root").ChildNodes)
            {
                if (n.NodeType != XmlNodeType.Comment)
                {
                    if (target[n.Attributes["name"].Value] == null)
                    {
                        target.Add(n.Attributes["name"].Value, n.InnerText);
                    }
                    else
                    {
                        target[n.Attributes["name"].Value] = n.InnerText;
                    }
                }
            }
            if (language == ResourceManager.defaultLanguage)
            {
                CustomCache.Max(cacheKey, target, dp);
            }
            else
            {
                CustomCache.Insert(cacheKey, target, dp, CustomCache.MinuteFactor * 5);
            }
            return(target);
        }
Exemple #4
0
        /// <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);
        }
Exemple #5
0
        /// <summary>
        /// 加载资源
        /// </summary>
        /// <param name="target"></param>
        /// <param name="cacheKey"></param>
        /// <param name="fileName"></param>
        /// <returns></returns>
        private static Hashtable LoadResource(Hashtable target, string cacheKey, string fileName)
        {
            HttpContext csContext = HttpContext.Current;

            string filePath = csContext.Server.MapPath("~/" + fileName);

            CacheDependency dp = new CacheDependency(filePath);

            Xd = new XmlDocument();
            try
            {
                Xd.Load(filePath);
            }
            catch
            {
                return(target);
            }
            target = getRuleDateInfo(Xd);
            CustomCache.Max(cacheKey, target, dp);
            return(target);
        }
Exemple #6
0
        /// <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);
        }