namespace ClaudeDo.Localization; public sealed class LocaleStore { private readonly Dictionary _byCode; private LocaleStore(Dictionary byCode) => _byCode = byCode; public IReadOnlyList Available => _byCode.Values.ToList(); public bool TryGet(string code, out LocaleFile? file) => _byCode.TryGetValue(code, out file); public static LocaleStore Load(string folder) { var byCode = new Dictionary(StringComparer.OrdinalIgnoreCase); if (Directory.Exists(folder)) { foreach (var path in Directory.EnumerateFiles(folder, "*.json")) { try { var file = LocaleJson.Parse(File.ReadAllText(path)); if (!string.IsNullOrWhiteSpace(file.Code)) byCode[file.Code] = file; } catch { /* skip malformed locale files */ } } } return new LocaleStore(byCode); } }