Skip to content

feat(i18n): implement localization using @vscode/l10n #58

@aymenfurter

Description

@aymenfurter

Summary

Add proper i18n support using the official VS Code localization stack. Russian translations (provided by @gogi-eng in #45) should be the first non-English locale.

Requirements

  • Use @vscode/l10n (extension host) and @vscode/l10n-web (webviews) — no custom t() functions or hardcoded dictionaries
  • Translations live in external .l10n.<locale>.json bundle files, not in TypeScript source
  • All UI strings must be localized before merging — no partial/incremental state with mixed languages
  • Locale type should be open-ended (not hardcoded to en | ru)
  • Keep package.nls.json / package.nls.<locale>.json for manifest strings (already correct pattern)

Russian translations (from #45)

These strings were provided by @gogi-eng and should be used as input for the .l10n.ru.json bundle:

{
  "nav.observe": "Наблюдение",
  "nav.measure": "Метрики",
  "nav.improve": "Улучшение",
  "nav.levelUp": "Развитие",
  "nav.dashboard": "Обзор",
  "nav.timeline": "Таймлайн",
  "nav.codingMoments": "Моменты кода",
  "nav.output": "Выработка",
  "nav.burndown": "Расход токенов",
  "nav.patterns": "Паттерны",
  "nav.antiPatterns": "Антипаттерны",
  "nav.skillFinder": "Поиск навыков",
  "nav.contextHealth": "Контекст",
  "nav.levelUpPage": "Обучение",
  "filter.workspace": "Проект",
  "filter.current": "Текущий",
  "filter.all": "Все",
  "filter.searchWs": "Поиск проектов...",
  "filter.harness": "Среда ИИ",
  "filter.allHarnesses": "Все среды",
  "sidebar.title": "AI Engineer Coach",
  "sidebar.noData": "Пока нет данных — синхронизируйте сессии.",
  "sidebar.harnesses": "Обнаруженные среды",
  "sidebar.lastSync": "Обновлено",
  "sidebar.explore": "Открыть аналитику",
  "sidebar.sync": "Синхронизировать",
  "dash.calibrating": "Считаем сводку…",
  "dash.vibes": "Сводка по {n} направлениям",
  "dash.requests": "Запросы",
  "dash.sessions": "Сессии",
  "dash.loc": "Строк ИИ",
  "dash.workspaces": "Проекты",
  "dash.tokenHidden": "Токены и Burndown временно скрыты",
  "dash.tokenHiddenDesc": "Раздел отключён, пока не сверим цифры с биллингом GitHub.",
  "dash.apSummary": "Сводка антипаттернов",
  "dash.viewAllAp": "Все антипаттерны →",
  "dash.skillFinder": "Поиск навыков",
  "dash.openSkills": "Полный вид →",
  "dash.skillDesc": "Ищет повторяющиеся промпты, чтобы оформить их в навыки и не объяснять одно и то же.",
  "dash.skillAnalyze": "Проанализируйте историю промптов и найдите полезные навыки.",
  "dash.scanSkills": "Сканировать навыки",
  "dash.dailyActivity": "Активность по дням",
  "dash.topWs": "Топ проектов по запросам",
  "dash.byHarness": "Запросы по среде ИИ",
  "dash.close": "Закрыть",
  "score.mergeWizard": "Мастер слияний",
  "score.shipGoblin": "Гоблин релизов",
  "score.vibeGremlin": "Гремлин рефакторинга",
  "score.rubberDuck": "Утконаводитель",
  "score.stackTrace": "Выживший в стектрейсе"
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions