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); }
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()); }
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); }
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); } }