refactor: remove RouteCultureProvider
This commit is contained in:
parent
060514aca2
commit
d7d3cb6986
@ -1,47 +0,0 @@
|
||||
using System.Globalization;
|
||||
using System.Text.RegularExpressions;
|
||||
using Microsoft.AspNetCore.Localization;
|
||||
|
||||
namespace OliverBooth;
|
||||
|
||||
internal sealed partial class RouteCultureProvider : IRequestCultureProvider
|
||||
{
|
||||
private static readonly Regex CultureRegex = GetCultureRegex();
|
||||
private readonly CultureInfo _defaultCulture;
|
||||
private readonly CultureInfo _defaultUiCulture;
|
||||
|
||||
public RouteCultureProvider(CultureInfo requestCulture) : this(new RequestCulture(requestCulture))
|
||||
{
|
||||
}
|
||||
|
||||
public RouteCultureProvider(RequestCulture requestCulture)
|
||||
{
|
||||
_defaultCulture = requestCulture.Culture;
|
||||
_defaultUiCulture = requestCulture.UICulture;
|
||||
}
|
||||
|
||||
public Task<ProviderCultureResult?> DetermineProviderCultureResult(HttpContext httpContext)
|
||||
{
|
||||
PathString url = httpContext.Request.Path;
|
||||
|
||||
string defaultCulture = _defaultCulture.TwoLetterISOLanguageName;
|
||||
string defaultUiCulture = _defaultUiCulture.TwoLetterISOLanguageName;
|
||||
|
||||
if (url.ToString().Length <= 1)
|
||||
{
|
||||
return Task.FromResult(new ProviderCultureResult(defaultCulture, defaultUiCulture))!;
|
||||
}
|
||||
|
||||
string[]? parts = httpContext.Request.Path.Value?.Split('/');
|
||||
string requestCulture = parts?[1] ?? string.Empty;
|
||||
|
||||
bool isMatch = CultureRegex.IsMatch(requestCulture);
|
||||
string culture = isMatch ? requestCulture : defaultCulture;
|
||||
string uiCulture = isMatch ? requestCulture : defaultUiCulture;
|
||||
|
||||
return Task.FromResult(new ProviderCultureResult(culture, uiCulture))!;
|
||||
}
|
||||
|
||||
[GeneratedRegex("^[a-z]{2}(-[A-Z]{2})*$")]
|
||||
private static partial Regex GetCultureRegex();
|
||||
}
|
Loading…
Reference in New Issue
Block a user