Fallback to default culture if its required
This commit is contained in:
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user