@using System.Globalization
@using EnvelopeGenerator.ReceiverUI.Services
@inject IJSRuntime JSRuntime
@inject NavigationManager Navigation
@inject CultureService CultureService
@if (isOpen)
{
}
@code {
private bool isOpen = false;
private string CurrentCulture => CultureInfo.CurrentCulture.Name;
private void ToggleDropdown()
{
isOpen = !isOpen;
}
private async Task ChangeLanguageAsync(string culture)
{
if (CultureInfo.CurrentCulture.Name != culture)
{
await CultureService.SetCultureAsync(culture);
// Set culture without page reload
var cultureInfo = new CultureInfo(culture);
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
// Navigate without reload to trigger re-render
Navigation.NavigateTo(Navigation.Uri, forceLoad: false);
}
isOpen = false;
}
private string GetFlagCode(string culture)
{
return culture switch
{
"de-DE" => "de",
"en-US" => "us",
"fr-FR" => "fr",
_ => "de"
};
}
private string GetLanguageName(string culture)
{
return culture switch
{
"de-DE" => "Deutsch",
"en-US" => "English",
"fr-FR" => "Français",
_ => "Deutsch"
};
}
}