@using Microsoft.Extensions.Localization @using AliasVault.Client.Services @using Microsoft.JSInterop @using System.Globalization @implements IDisposable @inject LanguageService LanguageService @inject IJSRuntime JSRuntime
@if (_isDropdownOpen) {
@foreach (var language in LanguageService.GetSupportedLanguages()) { }
}
@code { private bool _isDropdownOpen = false; private string _currentLanguage = "en"; public void Dispose() { LanguageService.LanguageChanged -= OnLanguageChanged; } protected override async Task OnInitializedAsync() { // Get the current culture that Blazor is actually using var currentCulture = System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName; var supportedLanguages = LanguageService.GetSupportedLanguages(); if (supportedLanguages.ContainsKey(currentCulture)) { _currentLanguage = currentCulture; } else { // Fallback to getting language from service _currentLanguage = await LanguageService.GetCurrentLanguageAsync(); } LanguageService.LanguageChanged += OnLanguageChanged; StateHasChanged(); } private static string GetLanguageDisplayName(string languageCode) { var supportedLanguages = LanguageService.GetSupportedLanguages(); return supportedLanguages.GetValueOrDefault(languageCode, "English"); } private void OnLanguageChanged(string languageCode) { _currentLanguage = languageCode; InvokeAsync(StateHasChanged); } private void ToggleDropdown() { _isDropdownOpen = !_isDropdownOpen; } private async Task SelectLanguage(string languageCode) { _isDropdownOpen = false; await LanguageService.SetLanguageAsync(languageCode); } }