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 jsRuntime = host.Services.GetRequiredService<IJSRuntime>();
var interop = new Interop(jsRuntime); var interop = new Interop(jsRuntime);
var culture = await interop.GetLocalStorage("OqtaneCulture"); 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); culture = cultures.Single(c => c.IsDefault).Name;
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
} }
SetCulture(culture);
ServiceActivator.Configure(host.Services); ServiceActivator.Configure(host.Services);
await host.RunAsync(); 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"> <div class="dropdown-menu" aria-labelledby="btnCultures">
@foreach (var culture in _supportedCultures) @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>
</div> </div>
} }
@code{ @code{
private string _selectedCulture;
private IEnumerable<Culture> _supportedCultures; private IEnumerable<Culture> _supportedCultures;
[Parameter] [Parameter]
@ -29,8 +28,6 @@
protected override async Task OnParametersSetAsync() protected override async Task OnParametersSetAsync()
{ {
var interop = new Interop(JSRuntime);
_selectedCulture = await interop.GetLocalStorage("OqtaneCulture");
_supportedCultures = await LocalizationService.GetCulturesAsync(); _supportedCultures = await LocalizationService.GetCulturesAsync();
} }