@using System.Globalization
@if (!HideTabs) {
@foreach (var culture in SupportedCultures) { }
}
@if (IsTextArea) { } else { }
@if (Value != null && Value.ContainsKey(ActiveCulture)) {
Chars: @Value[ActiveCulture].Length
}
@code { [Parameter] public Dictionary Value { get; set; } = new(); [Parameter] public EventCallback> ValueChanged { get; set; } [Parameter] public string Placeholder { get; set; } = ""; [Parameter] public bool IsTextArea { get; set; } = false; [Parameter] public string ActiveCulture { get; set; } = "en"; [Parameter] public EventCallback ActiveCultureChanged { get; set; } [Parameter] public bool HideTabs { get; set; } = false; private static readonly Dictionary SupportedCultures = new() { { "en", "English" }, { "ar", "العربية" }, { "es", "Español" }, { "de", "Deutsch" } }; protected override void OnInitialized() { if (string.IsNullOrEmpty(ActiveCulture)) { // Default to current culture if supported, otherwise en var current = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName; if (SupportedCultures.ContainsKey(current)) { ActiveCulture = current; } } } private string CurrentValue { get => Value != null && Value.TryGetValue(ActiveCulture, out var v) ? v : ""; set { if (Value == null) Value = new(); Value[ActiveCulture] = value; ValueChanged.InvokeAsync(Value); } } private async Task SelectCulture(string culture) { ActiveCulture = culture; await ActiveCultureChanged.InvokeAsync(culture); } }