microsoft / microsoft/AI-Engineering-Coach
feat(i18n): implement localization using @vscode/l10n
Open
@aymenfurter is already working on this.
Since Jun 7, 2026.
- Dominant language
- TypeScript
- Stars
- 4.2k
- Forks
- 585
- Avg merge
- 22h 5m
- Merged PRs (30d)
- 16
Description
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 customt()functions or hardcoded dictionaries - Translations live in external
.l10n.<locale>.jsonbundle 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>.jsonfor 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": "Выживший в стектрейсе"
}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.