From f529a5ff22482a3b744223c52df41d3c2d9f2d77 Mon Sep 17 00:00:00 2001 From: mika kuns Date: Wed, 3 Jun 2026 11:46:33 +0200 Subject: [PATCH] feat(i18n): initialize Localizer at app startup from config/OS culture --- src/ClaudeDo.App/Program.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/ClaudeDo.App/Program.cs b/src/ClaudeDo.App/Program.cs index ab06ede..1b85046 100644 --- a/src/ClaudeDo.App/Program.cs +++ b/src/ClaudeDo.App/Program.cs @@ -1,8 +1,10 @@ using Avalonia; using ClaudeDo.Data; using ClaudeDo.Data.Git; +using ClaudeDo.Localization; using ClaudeDo.Releases; using ClaudeDo.Ui; +using ClaudeDo.Ui.Localization; using ClaudeDo.Ui.Services; using ClaudeDo.Ui.Services.Interfaces; using ClaudeDo.Ui.ViewModels; @@ -12,6 +14,9 @@ using ClaudeDo.Ui.ViewModels.Modals.Settings; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using System; +using System.Globalization; +using System.IO; +using System.Linq; using System.Net.Http; using System.Reflection; using System.Runtime.InteropServices; @@ -71,6 +76,17 @@ sealed class Program // Infrastructure sc.AddSingleton(settings); + var localesDir = Path.Combine(AppContext.BaseDirectory, "locales"); + var localeStore = LocaleStore.Load(localesDir); + var initialLang = !string.IsNullOrWhiteSpace(settings.Language) + ? settings.Language + : CultureResolver.Resolve( + CultureInfo.CurrentUICulture.Name, + localeStore.Available.Select(l => l.Code).ToArray(), + fallback: "en"); + var localizer = new Localizer(localeStore, initialLang); + TrExtension.Localizer = localizer; + sc.AddSingleton(localizer); sc.AddDbContextFactory(opt => opt.UseSqlite($"Data Source={dbPath}")); sc.AddScoped(sp =>