@namespace ECommerce.Module.Components.Shared @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)) { var current = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName; if (SupportedCultures.ContainsKey(current)) { ActiveCulture = current; } } } private string CurrentValue => Value != null && Value.TryGetValue(ActiveCulture, out var v) ? v : ""; private void OnInput(ChangeEventArgs e) { var value = e.Value?.ToString() ?? ""; if (Value == null) Value = new(); Value[ActiveCulture] = value; ValueChanged.InvokeAsync(Value); } private async Task SelectCulture(string culture) { ActiveCulture = culture; await ActiveCultureChanged.InvokeAsync(culture); } }