using System.Text.Json; using CalendarServer.Features.Language.Models; namespace CalendarServer.Features.Language.Services; public class JsonLocalizationService : ILocalizationService { private readonly string _translationsPath; public JsonLocalizationService(IWebHostEnvironment env) { _translationsPath = Path.Combine(env.ContentRootPath, "Features", "Language", "Translations"); } public string CurrentCulture => "en"; public string Get(string key, string? culture = null) { culture ??= CurrentCulture; var filePath = Path.Combine(_translationsPath, $"{culture}.json"); if (!File.Exists(filePath)) return key; var json = File.ReadAllText(filePath); var doc = JsonDocument.Parse(json); var parts = key.Split('.'); JsonElement current = doc.RootElement; foreach (var part in parts) { if (!current.TryGetProperty(part, out current)) return key; } return current.GetString() ?? key; } public IEnumerable GetSupportedCultures() { return new List { new() { Code = "da", Name = "Danish", NativeName = "Dansk" }, new() { Code = "en", Name = "English", NativeName = "English" } }; } }