- Добавлены TuiResources (sealed record), Locale, LocalizationService - Все строки интерфейса вынесены из .razor-файлов в TuiResources - App.razor: клавиша L циклически переключает локаль, заголовок показывает [EN]/[RU] - Дочерние компоненты получают Loc как параметр (stateless) - Создан AGENT.tui.md с правилами работы с TUI для агентов - Обновлены AGENTS.md и CLAUDE.md со ссылками на AGENT.tui.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
26 lines
837 B
C#
26 lines
837 B
C#
namespace LazyBear.MCP.TUI.Localization;
|
|
|
|
/// <summary>
|
|
/// Синглтон, хранящий текущую локаль TUI. Переключение — клавиша L.
|
|
/// Компоненты подписываются на OnChanged для перерисовки при смене языка.
|
|
/// </summary>
|
|
public sealed class LocalizationService
|
|
{
|
|
private static readonly TuiResources[] All = [TuiResources.En, TuiResources.Ru];
|
|
private static readonly string[] Labels = ["EN", "RU"];
|
|
|
|
private int _index;
|
|
|
|
public TuiResources Current => All[_index];
|
|
public string Label => Labels[_index];
|
|
public Locale Locale => (Locale)_index;
|
|
|
|
public event Action? OnChanged;
|
|
|
|
public void SwitchNext()
|
|
{
|
|
_index = (_index + 1) % All.Length;
|
|
OnChanged?.Invoke();
|
|
}
|
|
}
|