示例#1
0
        /// <summary>
        /// Get current Language from User language list
        /// </summary>
        /// <param name="myLanguagesCultureList">My languages culture list.</param>
        /// <returns></returns>
        private static LanguageCultureItem InternalGetUserLanguages(LanguageCultureCollection myLanguagesCultureList)
        {
            // Get userLangs
            if (HttpContext.Current != null && HttpContext.Current.Request.UserLanguages != null &&
                HttpContext.Current.Request.UserLanguages.Length > 0)
            {
                var arrUserLangs = new ArrayList(HttpContext.Current.Request.UserLanguages);
                if (arrUserLangs.Count > 0)
                {
                    for (var i = 0; i <= arrUserLangs.Count - 1; i++)
                    {
                        string currentLanguage;
                        if (arrUserLangs[i].ToString().IndexOf(';') >= 0)
                        {
                            currentLanguage = arrUserLangs[i].ToString().Substring(
                                0, arrUserLangs[i].ToString().IndexOf(';'));
                        }
                        else
                        {
                            currentLanguage = arrUserLangs[i].ToString();
                        }

                        try
                        {
                            // We try the full one... if this fails we catch it
                            arrUserLangs[i] = new CultureInfo(currentLanguage);
                        }
                        catch (ArgumentException)
                        {
                            try
                            {
                                // Some browsers can send an invalid language
                                // we try to get first two letters.. this is usually valid
                                arrUserLangs[i] = new CultureInfo(currentLanguage.Substring(2));
                            }
                            catch (ArgumentException)
                            {
                            }

                            return(null);
                        }
                    }
                }

                var userLangs = (CultureInfo[])arrUserLangs.ToArray(typeof(CultureInfo));

                // Try to match browser "accept languages" list
                return(myLanguagesCultureList.GetBestMatching(userLangs));
            }

            return(null);
        }
示例#2
0
        /// <summary>
        /// Get current Language from Query string
        /// </summary>
        /// <param name="myLanguagesCultureList">My languages culture list.</param>
        /// <returns></returns>
        private static LanguageCultureItem InternalGetQuerystring(LanguageCultureCollection myLanguagesCultureList)
        {
            if (HttpContext.Current != null && HttpContext.Current.Request.Params["Lang"] != null &&
                HttpContext.Current.Request.Params["Lang"].Length > 0)
            {
                try
                {
                    return
                        (myLanguagesCultureList.GetBestMatching(
                             new CultureInfo(HttpContext.Current.Request.Params["Lang"])));
                }
                catch (ArgumentException)
                {
                    // Maybe an invalid CultureInfo
                    return(null);
                }
            }

            return(null);
        }
示例#3
0
        /// <summary>
        /// Get current Language from Cookie
        /// </summary>
        /// <param name="myLanguagesCultureList">My languages culture list.</param>
        /// <param name="cookieAlias">The cookie alias.</param>
        /// <returns></returns>
        private static LanguageCultureItem InternalGetCookie(
            LanguageCultureCollection myLanguagesCultureList, string cookieAlias)
        {
            if (HttpContext.Current != null && cookieAlias != null &&
                HttpContext.Current.Request.Cookies[SwitcherCookiePrefix + cookieAlias] != null &&
                HttpContext.Current.Request.Cookies[SwitcherCookiePrefix + cookieAlias].Value.Length > 0)
            {
                try
                {
                    return
                        (myLanguagesCultureList.GetBestMatching(
                             new CultureInfo(
                                 HttpContext.Current.Request.Cookies[SwitcherCookiePrefix + cookieAlias].Value)));
                }
                catch (ArgumentException)
                {
                    // Maybe an invalid CultureInfo
                }
            }

            return(null);
        }