feat(i18n): initialize Localizer at app startup from config/OS culture
This commit is contained in:
@@ -1,8 +1,10 @@
|
|||||||
using Avalonia;
|
using Avalonia;
|
||||||
using ClaudeDo.Data;
|
using ClaudeDo.Data;
|
||||||
using ClaudeDo.Data.Git;
|
using ClaudeDo.Data.Git;
|
||||||
|
using ClaudeDo.Localization;
|
||||||
using ClaudeDo.Releases;
|
using ClaudeDo.Releases;
|
||||||
using ClaudeDo.Ui;
|
using ClaudeDo.Ui;
|
||||||
|
using ClaudeDo.Ui.Localization;
|
||||||
using ClaudeDo.Ui.Services;
|
using ClaudeDo.Ui.Services;
|
||||||
using ClaudeDo.Ui.Services.Interfaces;
|
using ClaudeDo.Ui.Services.Interfaces;
|
||||||
using ClaudeDo.Ui.ViewModels;
|
using ClaudeDo.Ui.ViewModels;
|
||||||
@@ -12,6 +14,9 @@ using ClaudeDo.Ui.ViewModels.Modals.Settings;
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
@@ -71,6 +76,17 @@ sealed class Program
|
|||||||
|
|
||||||
// Infrastructure
|
// Infrastructure
|
||||||
sc.AddSingleton(settings);
|
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<ILocalizer>(localizer);
|
||||||
sc.AddDbContextFactory<ClaudeDoDbContext>(opt =>
|
sc.AddDbContextFactory<ClaudeDoDbContext>(opt =>
|
||||||
opt.UseSqlite($"Data Source={dbPath}"));
|
opt.UseSqlite($"Data Source={dbPath}"));
|
||||||
sc.AddScoped<ClaudeDoDbContext>(sp =>
|
sc.AddScoped<ClaudeDoDbContext>(sp =>
|
||||||
|
|||||||
Reference in New Issue
Block a user