public static string Get(HttpContext context, IRequestedLanguageTagAccessor accessor) { var antChain = GetAntChain(); var languageTag = string.Empty; if (antChain is null) { languageTag = GetFromCookie(context, accessor); } else { do { var antPosNames = antChain.AntPosNames is null || antChain.AntPosNames.Count == 0 ? new[] {AntPosNameConstants.LANGUAGE_TAG} : antChain.AntPosNames.ToArray(); languageTag = antChain.From switch { AntFrom.Cookie => GetFromCookie(context, accessor, antPosNames), AntFrom.Route => GetFromRoute(context, antPosNames), AntFrom.QueryString => GetFromQuery(context, antPosNames), AntFrom.Forms => GetFromForms(context, antPosNames), AntFrom.Headers => GetFromHeader(context, antPosNames), _ => languageTag }; if (!string.IsNullOrWhiteSpace(languageTag)) break; antChain = antChain.Next; } while (antChain != null); } return languageTag; }
/// <summary> /// Invoke async /// </summary> /// <param name="context"></param> /// <param name="accessor"></param> /// <returns></returns> public async Task InvokeAsync(HttpContext context, IRequestedLanguageTagAccessor accessor) { //Set current LanguageTag in LanguageTagCoreManager. //If the value is null, empty or whitespace, will be used 'DefaultLocaleStr' - 'en_US'. var languageTag = AntManager.Get(context, accessor); LanguageTagCoreManager.UpdateTag(languageTag); await _next(context); }
private static string GetFromCookie(HttpContext context, IRequestedLanguageTagAccessor accessor, params string[] antPosNames) { var languageTag = string.Empty; foreach (var antPosName in antPosNames) { languageTag = accessor is null || !accessor.HasContext ? context.Request.Cookies[antPosName] : accessor.Get(antPosName); if (!string.IsNullOrWhiteSpace(languageTag)) return languageTag; } return languageTag; }
/// <summary> /// Create a new instance of <see cref="AnonymousTagHelper"/>. /// </summary> /// <param name="accessor"></param> /// <param name="textProvider"></param> public AnonymousTagHelper(IRequestedLanguageTagAccessor accessor, ITextProvider textProvider) : base(accessor, textProvider) { }
/// <summary> /// Create a new instance of <see cref="BaseTagHelper"/>. /// </summary> /// <param name="accessor"></param> /// <param name="textProvider"></param> protected BaseTagHelper(IRequestedLanguageTagAccessor accessor, ITextProvider textProvider) { _accessor = accessor ?? throw new ArgumentNullException(nameof(accessor)); _textProvider = textProvider ?? throw new ArgumentNullException(nameof(textProvider)); }
/// <summary> /// Create a new instance of <see cref="TranslateTagHelper"/>. /// </summary> /// <param name="accessor"></param> /// <param name="textProvider"></param> public TranslateTagHelper(IRequestedLanguageTagAccessor accessor, ITextProvider textProvider) : base(accessor, textProvider) { }
public static string MayLanguageTag(this IRequestedLanguageTagAccessor accessor, string languageTag, string languageTagBodyName = null) { return(string.IsNullOrWhiteSpace(languageTag) ? accessor.Get(languageTagBodyName) : languageTag); }
/// <summary> /// Create a new instance of <see cref="HostedLanguageTagFactory"/>. /// </summary> /// <param name="requestedAccessor"></param> public HostedLanguageTagFactory(IRequestedLanguageTagAccessor requestedAccessor) { _requestedLanguageTagAccessor = requestedAccessor; }