feat(i18n): add Language preference and Save() to AppSettings

This commit is contained in:
mika kuns
2026-06-03 11:45:06 +02:00
parent 35ad1715d3
commit 6a85d82fcf
2 changed files with 31 additions and 0 deletions

View File

@@ -7,6 +7,7 @@ public sealed class AppSettings
{ {
public string DbPath { get; set; } = "~/.todo-app/todo.db"; public string DbPath { get; set; } = "~/.todo-app/todo.db";
public string SignalRUrl { get; set; } = "http://127.0.0.1:47821/hub"; public string SignalRUrl { get; set; } = "http://127.0.0.1:47821/hub";
public string Language { get; set; } = "";
private static readonly string ConfigPath = Paths.Expand("~/.todo-app/ui.config.json"); private static readonly string ConfigPath = Paths.Expand("~/.todo-app/ui.config.json");
@@ -27,4 +28,12 @@ public sealed class AppSettings
} }
return new(); return new();
} }
public void Save()
{
var dir = Path.GetDirectoryName(ConfigPath);
if (!string.IsNullOrEmpty(dir)) Directory.CreateDirectory(dir);
var json = JsonSerializer.Serialize(this, new JsonSerializerOptions { WriteIndented = true });
File.WriteAllText(ConfigPath, json);
}
} }

View File

@@ -0,0 +1,22 @@
using System.Text.Json;
using ClaudeDo.Ui;
namespace ClaudeDo.Ui.Tests;
public class AppSettingsTests
{
[Fact]
public void Language_defaults_to_empty()
{
Assert.Equal("", new AppSettings().Language);
}
[Fact]
public void Language_round_trips_through_json()
{
var json = JsonSerializer.Serialize(new AppSettings { Language = "de" });
var back = JsonSerializer.Deserialize<AppSettings>(json,
new JsonSerializerOptions { PropertyNameCaseInsensitive = true })!;
Assert.Equal("de", back.Language);
}
}