feat(01-12): wave-3 task-1 — manifest i18n (__MSG_*__ + default_locale='en') + _locales/{en,ru}/messages.json (16 keys; D-07 + D-08 baked in)
manifest.json migrated to chrome i18n placeholders: - name: 'AI Call Recorder' → '__MSG_extName__' - description: 'Запись сессий операторов для диагностики ошибок' → '__MSG_extDesc__' - default_locale: 'en' (new field per RESEARCH §11 + Pitfall 4 fallback chain) - action.default_title: '__MSG_tooltipOff__' (new field per Brief §02 string #1) _locales/en/messages.json + _locales/ru/messages.json each carry the same 16-key matrix per RESEARCH §10 + Brief §02 verbatim + D-07 user override + D-08 tagline: extName, extDesc, tooltipOff, tooltipRecPrefix, tooltipErr, popupSavePrompt, popupSaveCta, popupSaveDone, popupSaving, popupSaveDoneShort, popupEmptyState, popupInfoText, notifStartup, notifRecovery, welcomeHeroRu, welcomeHeroEn Canonical values (per brand-decisions-v1.md + RESEARCH §10 Brief §02): - EN extName = 'Mokosh — Session Capture' (D-07 user override of A) - EN extDesc = 'Thirty seconds ago, always at hand.' (D-08 tagline) - RU extName = 'Mokosh — Запись сессии' - RU extDesc = 'Тридцать секунд назад, всегда под рукой.' NB on key count: the artifact-table 12-key baseline excluded the three Wave-4 deltas (popupSaving, popupSaveDoneShort, popupEmptyState) which are introduced now to avoid a re-locale-parity flap when Wave 4 lands. popupInfoText is present in BOTH locales (the plan-checker flag 1 informational scope-slip is corrected here — see deviation block below). Plan success-criteria reading: ≥12 keys with Wave 4 additive deltas accounted for. Each key carries both `message` and `description` per Chrome i18n schema. EN descriptions are translator-facing; RU descriptions are plain-Russian context for native operators. npm run build emits: - dist/manifest.json carries the i18n shape verbatim (crxjs preserves __MSG_* placeholders; Chrome's manifest loader resolves them at install) - dist/_locales/en/messages.json (3.30 KB) - dist/_locales/ru/messages.json (3.81 KB) Verification: - tests/i18n/manifest-i18n.test.ts: 10/10 GREEN - tests/i18n/locale-parity.test.ts: 4/4 GREEN (en↔ru parity, non-empty messages, 16 keys each) - tests/build/no-remote-fonts.test.ts: 4/4 GREEN (post-build dist/ has zero remote font URLs) - Full vitest sweep: 145/147 GREEN (2 RED remaining are popup/style.css tokens-adopted cases — Wave 4 work) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
66
_locales/ru/messages.json
Normal file
66
_locales/ru/messages.json
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"extName": {
|
||||
"message": "Mokosh — Запись сессии",
|
||||
"description": "manifest.json:name; отображается в chrome://extensions, Web Store, контекстных меню. Per brand-decisions-v1.md D-07."
|
||||
},
|
||||
"extDesc": {
|
||||
"message": "Тридцать секунд назад, всегда под рукой.",
|
||||
"description": "manifest.json:description; слоган per brand-decisions-v1.md D-08."
|
||||
},
|
||||
"tooltipOff": {
|
||||
"message": "Mokosh — щёлкните, чтобы начать запись",
|
||||
"description": "Подсказка кнопки на панели инструментов в режиме OFF. Click triggers chrome.action.onClicked → startVideoCapture."
|
||||
},
|
||||
"tooltipRecPrefix": {
|
||||
"message": "Mokosh — идёт запись",
|
||||
"description": "Подсказка кнопки в режиме REC; SW добавляет ' (MM:SS)' через formatElapsed(seconds)."
|
||||
},
|
||||
"tooltipErr": {
|
||||
"message": "Mokosh — ошибка записи, щёлкните для восстановления",
|
||||
"description": "Подсказка кнопки в режиме ERROR. Click reattempts startVideoCapture."
|
||||
},
|
||||
"popupSavePrompt": {
|
||||
"message": "Сохранить отчёт об ошибке?",
|
||||
"description": "Заголовок попапа (зарезервировано для будущих макетов попапа с явным вопросом)."
|
||||
},
|
||||
"popupSaveCta": {
|
||||
"message": "Сохранить отчёт",
|
||||
"description": "Текст основной CTA-кнопки попапа (idle state). Триггерит SAVE_ARCHIVE."
|
||||
},
|
||||
"popupSaveDone": {
|
||||
"message": "Архив сохранён в Загрузки.",
|
||||
"description": "Статусное сообщение попапа после успешного SAVE_ARCHIVE."
|
||||
},
|
||||
"popupSaving": {
|
||||
"message": "Сохраняю...",
|
||||
"description": "Текст CTA-кнопки попапа во время выполнения SAVE_ARCHIVE."
|
||||
},
|
||||
"popupSaveDoneShort": {
|
||||
"message": "Готово! ✓",
|
||||
"description": "Текст CTA-кнопки попапа сразу после успешного SAVE_ARCHIVE (3 секунды до возврата в idle)."
|
||||
},
|
||||
"popupEmptyState": {
|
||||
"message": "Откройте запись через иконку расширения",
|
||||
"description": "Empty-state статус попапа когда попап открыт без активной записи (редко в режиме SAVE-only из Plan 01-09)."
|
||||
},
|
||||
"popupInfoText": {
|
||||
"message": "Последние 30 сек видео + 10 мин лога",
|
||||
"description": "Info-text под SAVE-кнопкой. Краткое описание содержимого архива."
|
||||
},
|
||||
"notifStartup": {
|
||||
"message": "Запись запущена. Я слежу за последними 30 секундами.",
|
||||
"description": "Тело уведомления для onStartup + manual-start. Заголовок — extName."
|
||||
},
|
||||
"notifRecovery": {
|
||||
"message": "Запись возобновлена. Буфер снова заполняется.",
|
||||
"description": "Тело уведомления после RECORDING_ERROR recovery. Заголовок — extName."
|
||||
},
|
||||
"welcomeHeroRu": {
|
||||
"message": "Тридцать секунд назад, всегда под рукой.",
|
||||
"description": "Welcome page hero — Russian text (показывается рядом с английским в parallel-text layout)."
|
||||
},
|
||||
"welcomeHeroEn": {
|
||||
"message": "Thirty seconds ago, always at hand.",
|
||||
"description": "Welcome page hero — English text (показывается рядом с русским в parallel-text layout)."
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user