예제 #1
0
        public CustomMvcLocalizer(IStringLocalizerFactory factory, IGlobalizationService globalizationService, IHttpContextAccessor httpContextAccessor)
            : base(factory)
        {
            string token = httpContextAccessor.HttpContext.GetTokenAsync("access_token").GetAwaiter().GetResult();

            if (httpContextAccessor.HttpContext.Request.Headers.ContainsKey(Common.Constants.Constant.Protocol))
            {
                protocol = new Guid(httpContextAccessor.HttpContext.Request.Headers[Common.Constants.Constant.Protocol]);
            }
            else
            {
                protocol = Guid.NewGuid();
            }

            Type type = typeof(T);

            object[] attrs = type.GetCustomAttributes(typeof(Microsoft.AspNetCore.Mvc.AreaAttribute), false);

            string area;

            if (attrs.Length > 0)
            {
                area = (attrs[0] as Microsoft.AspNetCore.Mvc.AreaAttribute).RouteValue;
            }
            else
            {
                area = "Shared";
            }

            string tag = type.Name?.Replace("Controller", "");

            IRequestCultureFeature requestCultureFeature = httpContextAccessor.HttpContext.Features.Get <IRequestCultureFeature>();
            RequestCulture         requestCulture        = requestCultureFeature.RequestCulture;
            string culture = requestCulture.Culture.Name?.ToLower();

            translations = globalizationService.GetTermsTranslationsByTagAsync(token, protocol, area, tag, culture).GetAwaiter().GetResult();
        }