feat: добавить локализацию TUI (en/ru) с переключением клавишей L
- Добавлены 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>
This commit is contained in:
25
LazyBear.MCP/TUI/Localization/LocalizationService.cs
Normal file
25
LazyBear.MCP/TUI/Localization/LocalizationService.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user