예제 #1
0
        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;
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        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;
        }
예제 #4
0
 /// <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)
 {
 }
예제 #5
0
 /// <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)
 {
 }
예제 #7
0
 public static string MayLanguageTag(this IRequestedLanguageTagAccessor accessor, string languageTag, string languageTagBodyName = null)
 {
     return(string.IsNullOrWhiteSpace(languageTag) ? accessor.Get(languageTagBodyName) : languageTag);
 }
예제 #8
0
 /// <summary>
 /// Create a new instance of <see cref="HostedLanguageTagFactory"/>.
 /// </summary>
 /// <param name="requestedAccessor"></param>
 public HostedLanguageTagFactory(IRequestedLanguageTagAccessor requestedAccessor)
 {
     _requestedLanguageTagAccessor = requestedAccessor;
 }