Fallback to default culture if its required

This commit is contained in:
hishamco
2020-12-03 16:14:23 +03:00
parent 1a8125c26d
commit 049ded6f7e
2 changed files with 15 additions and 8 deletions

View File

@ -95,13 +95,16 @@ namespace Oqtane.Client
var jsRuntime = host.Services.GetRequiredService<IJSRuntime>();
var interop = new Interop(jsRuntime);
var culture = await interop.GetLocalStorage("OqtaneCulture");
if (culture != null)
var localizationService = host.Services.GetRequiredService<ILocalizationService>();
var cultures = await localizationService.GetCulturesAsync();
if (culture == null || !cultures.Any(c => c.Name.Equals(culture, StringComparison.OrdinalIgnoreCase)))
{
var cultureInfo = CultureInfo.GetCultureInfo(culture);
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
culture = cultures.Single(c => c.IsDefault).Name;
}
SetCulture(culture);
ServiceActivator.Configure(host.Services);
await host.RunAsync();
@ -155,5 +158,12 @@ namespace Oqtane.Client
}
}
}
private static void SetCulture(string culture)
{
var cultureInfo = CultureInfo.GetCultureInfo(culture);
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
}
}
}

View File

@ -14,14 +14,13 @@
<div class="dropdown-menu" aria-labelledby="btnCultures">
@foreach (var culture in _supportedCultures)
{
<a class="dropdown-item @(_selectedCulture == culture.Name ? "active" : String.Empty)" href="#" @onclick="@(async e => await SetCultureAsync(culture.Name))">@culture.DisplayName</a>
<a class="dropdown-item @(CultureInfo.CurrentUICulture.Name == culture.Name ? "active" : String.Empty)" href="#" @onclick="@(async e => await SetCultureAsync(culture.Name))">@culture.DisplayName</a>
}
</div>
</div>
}
@code{
private string _selectedCulture;
private IEnumerable<Culture> _supportedCultures;
[Parameter]
@ -29,8 +28,6 @@
protected override async Task OnParametersSetAsync()
{
var interop = new Interop(JSRuntime);
_selectedCulture = await interop.GetLocalStorage("OqtaneCulture");
_supportedCultures = await LocalizationService.GetCulturesAsync();
}