Files
mokosh/_locales/ru/messages.json
Mark 110cebc50d 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>
2026-05-19 22:33:42 +02:00

67 lines
3.7 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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)."
}
}