@using System.Globalization @inject NavigationManager Navigation @inject IJSRuntime JS @GetCurrentLabel() 🇻🇳 Tiếng Việt 🇺🇸 English @code { private string GetCurrentLabel() { var culture = CultureInfo.CurrentUICulture.Name; return culture.StartsWith("vi", StringComparison.OrdinalIgnoreCase) ? "VI" : "EN"; } private async Task SwitchLanguage(string targetCulture) { // Save to localStorage for persistence across page reloads await JS.InvokeVoidAsync("localStorage.setItem", "aPOS_culture", targetCulture); // Force full page reload to reinitialize the WASM app with new culture var currentUri = Navigation.Uri; var uri = new Uri(currentUri); // Build clean URL (strip any culture segments from path) var path = uri.AbsolutePath; var segments = path.Split('/', StringSplitOptions.RemoveEmptyEntries); // Remove existing culture segment if present if (segments.Length > 0 && ( segments[0].Equals("vi-VN", StringComparison.OrdinalIgnoreCase) || segments[0].Equals("en-US", StringComparison.OrdinalIgnoreCase) || segments[0].Equals("vi", StringComparison.OrdinalIgnoreCase) || segments[0].Equals("en", StringComparison.OrdinalIgnoreCase))) { segments = segments.Skip(1).ToArray(); } var cleanPath = "/" + string.Join('/', segments); if (cleanPath == "/") cleanPath = ""; // Navigate to root with forceLoad to reinitialize WASM Navigation.NavigateTo($"{cleanPath}", forceLoad: true); } }