using System.Globalization; using Newtonsoft.Json; namespace C969Project; public static class Localization { public static Dictionary> Localizations = new(); public static string CurrentLanguage { get; set; } = "en-US"; public static void Initialize() { LoadLocalizations(); DetermineLocale(); } public static string GetLocalization(string lang, string id) { return Localizations[lang][id] ?? "Couldn't find localization"; } public static string GetLocalization(string id) => GetLocalization(CurrentLanguage, id); private static void DetermineLocale() { try { RegionInfo region = RegionInfo.CurrentRegion; string code = region.TwoLetterISORegionName; if (code.Equals("IS", StringComparison.OrdinalIgnoreCase)) { CurrentLanguage = "is-IS"; } else { CurrentLanguage = "en-US"; } } catch (Exception e) { Console.WriteLine($@"Localization Error: {e.Message}, defaulting to en-US"); CurrentLanguage = "en-US"; } } private static void LoadLocalizations() { if (Directory.Exists($"{AppDomain.CurrentDomain.BaseDirectory}/locale")) { var dir = new DirectoryInfo($"{AppDomain.CurrentDomain.BaseDirectory}/locale"); foreach (var file in dir.GetFiles("*.json")) { using (StreamReader r = new StreamReader(file.FullName)) { var json = JsonConvert.DeserializeObject>(r.ReadToEnd()); if (json != null) Localizations.Add(file.Name.Replace(".json", ""), json); } } } } private static void AddLocalization(string language, Dictionary dictionary) { if (!Localizations.ContainsKey(language)) { Localizations.Add(language, dictionary); } } }