public static string GetByAcceptLangHeader(string AcceptLangHeader) { if (string.IsNullOrEmpty(AcceptLangHeader)) { return(SystemLangCode); } string[] parts = AcceptLangHeader.Split(LangSep, StringSplitOptions.RemoveEmptyEntries); bool HasEn = false; foreach (var item in parts) { if (!string.IsNullOrEmpty(item) && item.Length >= 2) { string lang = item.ToLower().Trim(); if (lang.Length > 2) { lang = lang.Substring(0, 2); } if (lang.Length != 2) { continue; } if (lang == "en") { HasEn = true; continue; } if (CmsLangs.ContainsKey(lang)) { return(lang); } } } if (HasEn) { return("en"); } return(SystemLangCode); }
public static string GetCmsLangCode(RenderContext context) { if (context.User != null && !string.IsNullOrEmpty(context.User.Language)) { string lang = context.User.Language; if (CmsLangs.ContainsKey(lang)) { return(lang); } } // based on accept langs.. var acceptlangs = context.Request.Headers.Get("Accept-Language"); if (!string.IsNullOrWhiteSpace(acceptlangs)) { return(GetByAcceptLangHeader(acceptlangs)); } return(SystemLangCode); }