예제 #1
0
        private static bool ValidLanguageForUserRegion(Constants.LANG lang, Constants.USER_REGION userRegion)
        {
            if (lang == Constants.LANG.ENGLISH)
            {
                return(true);
            }
            switch (userRegion)
            {
            case Constants.USER_REGION.USA:
                if (lang == Constants.LANG.FRENCH | lang == Constants.LANG.SPANISH)
                {
                    return(true);
                }
                break;

            case Constants.USER_REGION.EUROPE:
                if (lang == Constants.LANG.FRENCH | lang == Constants.LANG.GERMAN | lang == Constants.LANG.ITALIAN | lang == Constants.LANG.SPANISH)
                {
                    return(true);
                }
                break;

            case Constants.USER_REGION.ASIA:
                if (lang == Constants.LANG.KOREAN | lang == Constants.LANG.THAI)
                {
                    return(true);
                }
                break;

            case Constants.USER_REGION.JAPAN:
                if (lang == Constants.LANG.JAPANESE)
                {
                    return(true);
                }
                break;

            case Constants.USER_REGION.CHINA:
                if (lang == Constants.LANG.CHINESE)
                {
                    return(true);
                }
                break;

            case Constants.USER_REGION.RUSSIA:
                if (lang == Constants.LANG.RUSSIAN)
                {
                    return(true);
                }
                break;

            case Constants.USER_REGION.AFRICA:
                if (lang == Constants.LANG.FRENCH)
                {
                    return(true);
                }
                break;
            }
            return(false);
        }
예제 #2
0
        public static void SetDefaultRegionLang()
        {
            Constants.USER_REGION region = Constants.USER_REGION.USA;
            Constants.LANG        lang   = Constants.LANG.ENGLISH;
            //DomainMappings domainList = new DomainMappings();
            //if (domainList.Match)
            //{
            //    region = domainList.UserRegion;
            //    lang = domainList.Lang;
            //}
            //else
            //{
            string countryCode = "";
            string langCode    = "";
            string acceptLang  = HttpContext.Current.Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"];
            int    hyphenPos   = acceptLang.IndexOf('-');

            if (hyphenPos >= 2 && acceptLang.Substring(hyphenPos + 1).Length >= 2)
            {
                countryCode = acceptLang.Substring(hyphenPos + 1, 2);
                langCode    = acceptLang.Substring(hyphenPos - 2, 2);
            }
            if (!string.IsNullOrEmpty(countryCode) && countryCode != "US" && countryCode != "CA" && IsUserAgentAcceptable)
            {
                using (var db = DBConn.Open())
                {
                    var param = new DynamicParameters();
                    param.Add("@CountryCode", countryCode);
                    string terr = db.QueryFirst("SELECT TerritoryID FROM tbl_Countries_L WHERE PKCountryID = @CountryCode", param, commandType: CommandType.Text);
                    if (!string.IsNullOrEmpty(terr))
                    {
                        region = GetUserRegionByTerritory(terr);
                    }
                }
            }
            if (!string.IsNullOrEmpty(langCode) && langCode != "en")
            {
                lang = GetLanguageByISOCode(langCode);
                if (!ValidLanguageForUserRegion(lang, region))
                {
                    lang = Constants.LANG.ENGLISH;
                }
            }
            //}
            WriteCookies("region", ((int)region).ToString());
            WriteCookies("lang", ((int)lang).ToString());
        }
예제 #3
0
        public static Constants.USER_REGION GetUserRegionByTerritory(string terr)
        {
            Constants.USER_REGION retVal = default(Constants.USER_REGION);
            switch (terr)
            {
            case "AFR":
                return(Constants.USER_REGION.AFRICA);

            case "AUS":
                return(Constants.USER_REGION.AUSTRALIA);

            case "CHN":
                return(Constants.USER_REGION.CHINA);

            case "ERU":
                return(Constants.USER_REGION.RUSSIA);

            case "JPN":
                return(Constants.USER_REGION.JAPAN);

            case "MIDE":
                return(Constants.USER_REGION.MIDDLE_EAST);

            case "UKI":
                return(Constants.USER_REGION.UK);

            default:
                if (Functions.TerritoryInAsia(terr))
                {
                    return(Constants.USER_REGION.ASIA);
                }
                if (Functions.TerritoryInUnitedStates(terr) || Functions.TerritoryInCanada(terr) || Functions.TerritoryInLatinAmerica(terr))
                {
                    return(Constants.USER_REGION.USA);
                }
                if (Functions.TerritoryInEurope(terr))
                {
                    return(Constants.USER_REGION.EUROPE);
                }
                break;
            }
            return(retVal);
        }
예제 #4
0
        private static void SetUserRegionLanguage(string terr, string pref)
        {
            Constants.USER_REGION userRegion = CurrentUser.GetUserRegionByTerritory(terr);
            bool useAvantePref = false;
            bool cookieUpdated = false;

            if (userRegion != CurrentUser.UserRegion)
            {
                // set region
                CurrentUser.UserRegion = userRegion;
                cookieUpdated          = true;
                //set language
                switch (userRegion)
                {
                case Constants.USER_REGION.CHINA: CurrentUser.Language = Constants.LANG.CHINESE; break;

                case Constants.USER_REGION.JAPAN: CurrentUser.Language = Constants.LANG.JAPANESE; break;

                default:
                    CurrentUser.Language = CurrentUser.GetUserLanguageByAvantePref(pref);
                    break;
                }
            }
            else if (CurrentUser.Language == Constants.LANG.ENGLISH)
            {
                useAvantePref = true;
            }
            if (useAvantePref)
            {
                Constants.LANG userLang = CurrentUser.GetUserLanguageByAvantePref(pref);
                switch (userRegion)
                {
                case Constants.USER_REGION.USA:
                    if (userLang == Constants.LANG.FRENCH || userLang == Constants.LANG.SPANISH)
                    {
                        CurrentUser.Language = userLang;
                        cookieUpdated        = true;
                    }
                    break;

                case Constants.USER_REGION.EUROPE:
                    if (userLang == Constants.LANG.FRENCH || userLang == Constants.LANG.SPANISH || userLang == Constants.LANG.ITALIAN || userLang == Constants.LANG.GERMAN)
                    {
                        CurrentUser.Language = userLang;
                        cookieUpdated        = true;
                    }
                    break;

                case Constants.USER_REGION.ASIA:
                    if (userLang == Constants.LANG.KOREAN)
                    {
                        CurrentUser.Language = userLang;
                        cookieUpdated        = true;
                    }
                    break;
                }
            }
            if (cookieUpdated)
            {
                // reload the page
                HttpContext.Current.Response.Redirect(HttpContext.Current.Request.Url.ToString(), true);
            }
        }