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)); }
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)); }