Browse Source

Merge pull request #9562 from abpframework/maliming/switch-language

Switch to the given language if sent in the querystring.
pull/9671/head
Halil İbrahim Kalkan 5 years ago
committed by GitHub
parent
commit
e9a2b45e76
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs
  2. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpLanguagesController.cs
  3. 19
      framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/RequestLocalization/AbpRequestLocalizationMiddleware.cs

1
framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs

@ -64,6 +64,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
context,
requestCulture
);
context.Items[AbpRequestLocalizationMiddleware.HttpContextItemName] = true;
}
await next(context);

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpLanguagesController.cs

@ -33,6 +33,8 @@ namespace Volo.Abp.AspNetCore.Mvc.Localization
new RequestCulture(culture, uiCulture)
);
HttpContext.Items[AbpRequestLocalizationMiddleware.HttpContextItemName] = true;
var context = new QueryStringCultureReplacementContext(HttpContext, new RequestCulture(culture, uiCulture), returnUrl);
await QueryStringCultureReplacement.ReplaceAsync(context);

19
framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/RequestLocalization/AbpRequestLocalizationMiddleware.cs

@ -10,6 +10,8 @@ namespace Microsoft.AspNetCore.RequestLocalization
{
public class AbpRequestLocalizationMiddleware : IMiddleware, ITransientDependency
{
public const string HttpContextItemName = "__AbpSetCultureCookie";
private readonly IAbpRequestLocalizationOptionsProvider _requestLocalizationOptionsProvider;
private readonly ILoggerFactory _loggerFactory;
@ -29,6 +31,23 @@ namespace Microsoft.AspNetCore.RequestLocalization
_loggerFactory
);
context.Response.OnStarting(() =>
{
if (context.Items[HttpContextItemName] == null)
{
var requestCultureFeature = context.Features.Get<IRequestCultureFeature>();
if (requestCultureFeature?.Provider is QueryStringRequestCultureProvider)
{
AbpRequestCultureCookieHelper.SetCultureCookie(
context,
requestCultureFeature.RequestCulture
);
}
}
return Task.CompletedTask;
});
await middleware.Invoke(context);
}
}

Loading…
Cancel
Save