Ensures the culture is set for requests for both front-end and back office

This commit is contained in:
Shannon
2021-01-08 11:29:07 +11:00
parent b4922d2685
commit c15b416e88
10 changed files with 94 additions and 24 deletions

View File

@@ -0,0 +1,37 @@
using System.Collections.Generic;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Localization;
using Microsoft.Extensions.Options;
using Umbraco.Core.Configuration.Models;
namespace Umbraco.Web.Common.Localization
{
/// <summary>
/// Custom Umbraco options configuration for <see cref="RequestLocalizationOptions"/>
/// </summary>
public class UmbracoRequestLocalizationOptions : IConfigureOptions<RequestLocalizationOptions>
{
private readonly IOptions<GlobalSettings> _globalSettings;
/// <summary>
/// Initializes a new instance of the <see cref="UmbracoRequestLocalizationOptions"/> class.
/// </summary>
public UmbracoRequestLocalizationOptions(IOptions<GlobalSettings> globalSettings) => _globalSettings = globalSettings;
/// <inheritdoc/>
public void Configure(RequestLocalizationOptions options)
{
// set the default culture to what is in config
options.DefaultRequestCulture = new RequestCulture(_globalSettings.Value.DefaultUILanguage);
// add a custom provider
if (options.RequestCultureProviders == null)
{
options.RequestCultureProviders = new List<IRequestCultureProvider>();
}
options.RequestCultureProviders.Insert(0, new UmbracoBackOfficeIdentityCultureProvider());
options.RequestCultureProviders.Insert(1, new UmbracoPublishedContentCultureProvider());
}
}
}