コード例 #1
0
        /// <summary>
        /// 多语言执行选择
        /// </summary>
        private void UseMultiLanguage()
        {
            string cultureName = null;
            // Attempt to read the culture cookie from Request
            HttpCookie cultureCookie = Request.Cookies["_culture"];

            if (cultureCookie != null)
            {
                cultureName = cultureCookie.Value;
            }
            else
            {
                cultureName = Request.UserLanguages[0]; // obtain it from HTTP header AcceptLanguages
            }
            // Validate culture name
            cultureName = UtilCultureHelper.GetImplementedCulture(cultureName); // This is safe

            // Modify current thread's cultures
            Thread.CurrentThread.CurrentCulture   = new System.Globalization.CultureInfo(cultureName);
            Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
        }
コード例 #2
0
ファイル: Global.asax.cs プロジェクト: radtek/Betterlife.Net
        /// <summary>
        /// i18n Custom caching
        /// </summary>
        /// <see cref="http://afana.me/post/aspnet-mvc-internationalization-part-2.aspx" title="Output Caching" />
        /// <param name="context"></param>
        /// <param name="arg"></param>
        /// <returns></returns>
        public override string GetVaryByCustomString(HttpContext context, string arg)
        {
            // It seems this executes multiple times and early, so we need to extract language again from cookie.
            if (arg == "culture") // culture name (e.g. "en-US") is what should vary caching
            {
                string cultureName = null;
                // Attempt to read the culture cookie from Request
                HttpCookie cultureCookie = Request.Cookies["_culture"];
                if (cultureCookie != null)
                {
                    cultureName = cultureCookie.Value;
                }
                else
                {
                    cultureName = Request.UserLanguages[0]; // obtain it from HTTP header AcceptLanguages
                }
                // Validate culture name
                cultureName = UtilCultureHelper.GetImplementedCulture(cultureName); // This is safe

                return(cultureName.ToLower());                                      // use culture name as cache key, "es", "en-us", "es-cl", etc.
            }

            return(base.GetVaryByCustomString(context, arg));
        }