コード例 #1
0
        public void AddInitialRequestCultureProvider_ShouldBeInsertedAtFirstPostion()
        {
            // Arrange
            var options  = new RequestLocalizationOptions();
            var provider = new CustomRequestCultureProvider(context => Task.FromResult(new ProviderCultureResult("ar-YE")));

            // Act
            options.AddInitialRequestCultureProvider(provider);

            // Assert
            Assert.Same(provider, options.RequestCultureProviders[0]);
        }
        public static IApplicationBuilder UseUrlRequestLocalization(this IApplicationBuilder builder, RequestLocalizationOptions options)
        {
            options.RequestCultureProviders.Clear();

            options.AddInitialRequestCultureProvider(new CustomRequestCultureProvider(async context =>
            {
                var currentCulture = context.GetCultureFromRequest();

                var requestCulture = new ProviderCultureResult(currentCulture, currentCulture);

                return(await Task.FromResult(requestCulture));
            }));

            return(builder
                   .UseMiddleware <UrlLocalizationAwareWebSocketsMiddleware>()
                   .UseRequestLocalization(options));
        }
コード例 #3
0
        public static IApplicationBuilder UseUrlLocalizationRequestLocalization(this IApplicationBuilder builder)
        {
            var supportedCultures = new[]
            {
                new CultureInfo("en"),
                new CultureInfo("fr"),
            };

            /*
             * The three default providers are:
             *      1. QueryStringRequestCultureProvider
             *      2. CookieRequestCultureProvider
             *      3. AcceptLanguageHeaderRequestCultureProvider
             * The 4th one is ours:
             *      4. URL base
             */
            var options = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture("en"),
                // Formatting numbers, dates, etc.
                SupportedCultures = supportedCultures,
                // UI strings that we have localized.
                SupportedUICultures = supportedCultures
            };

            options.AddInitialRequestCultureProvider(new CustomRequestCultureProvider(async context =>
            {
                var currentCulture = CultureInfo.CurrentCulture.TwoLetterISOLanguageName;

                var segments = context.Request.Path.Value.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);

                if (segments.Length >= 1 && segments[0].Length == 2)
                {
                    currentCulture = segments[0];
                }

                var requestCulture = new ProviderCultureResult(currentCulture, currentCulture);

                return(await Task.FromResult(requestCulture));
            }));

            return(builder
                   .UseUrlLocalizationAwareWebSockets()
                   .UseRequestLocalization(options));
        }