Skip to content

Phase 2: i18n (_locales + data-i18n bindings)#5

Merged
froggychips merged 1 commit into
mainfrom
review/phase-2-i18n
May 19, 2026
Merged

Phase 2: i18n (_locales + data-i18n bindings)#5
froggychips merged 1 commit into
mainfrom
review/phase-2-i18n

Conversation

@froggychips

Copy link
Copy Markdown
Owner

Summary

Вторая партия правок по итогам кодревью — i18n инфраструктура для Chrome Web Store submission. Без поведенческих изменений: переключения логики языка нет, всё runtime через chrome.i18n.getMessage с английским fallback внутри HTML/JS.

Что добавлено

  • _locales/en/messages.json и _locales/ru/messages.json — ~110 UI-ключей с покрытием options page (карточки, advanced section, dev section, onboarding wizard, dynamic strings, content-script tooltips).
  • manifest.jsondefault_locale: "en", name/description/action.default_title через __MSG_*__.
  • options.html — все текстовые элементы размечены data-i18n / data-i18n-placeholder / data-i18n-html / data-i18n-aria-label. Дефолтный inline-текст — на английском (видим если chrome.i18n не отработал).
  • options.js — helper applyI18n(), бежит по [data-i18n*] атрибутам на DOMContentLoaded и подставляет переводы. Динамические строки тоже идут через i18n('key') с fallback.
  • options.js BUILTIN_PERSONASlabel/hint переведены на английский как default. TODO в комментариях: добавить persona_<id>_label/hint ключи в _locales следующей итерацией.
  • content_script.js — добавлен tta_i18n(), hardcoded русские titles/placeholders выведены через i18n с английским fallback'ом. STYLES теперь en, cleanupXLabels — расширяемый Set с en+ru вариантами "Translate post" / "Перевести пост".

Что НЕ затронуто

  • Локализация русских персон (label/hint в _locales/ru/) — отдельная итерация, не блокирует CWS submission на en.
  • Background.js error messages — technical, не показываются юзеру напрямую.

Test plan

  • chrome://extensions → перезагрузить расширение → options открываются без ошибок в консоли
  • chrome://settings/languages → English first → options полностью на английском
  • Сменить на Русский → options полностью на русском (включая Configure→Настроить, динамику card-provider-sub)
  • Onboarding: тест-ключ → сообщения ✅ Key looks good / ❌ … на ожидаемом языке
  • DevTools на x.com: ховер по TweAI emoji-button → tooltip "Emoji" / "Эмодзи"
  • Write prompt button: placeholder "Your prompt for this post…" / "Ваш промт к посту…"
  • CWS dry-run: web-ext lint — 0 ошибок по i18n

🤖 Generated with Claude Code

Подготовка к Chrome Web Store submission на en-локали (CWS-блокер из плана
ревью): убраны hardcoded русские строки из default UI расширения.

- Добавлены _locales/en/messages.json и _locales/ru/messages.json с ~110
  UI-ключами; manifest получил default_locale: "en" и references __MSG__
  на name/description/action_default_title.
- options.html полностью размечен data-i18n / data-i18n-placeholder /
  data-i18n-html / data-i18n-aria-label атрибутами; дефолтный текст
  внутри элементов — английский (его видно если chrome.i18n не
  отработал).
- options.js: добавлен helper applyI18n(), пробегается по [data-i18n*]
  атрибутам на DOMContentLoaded и подставляет переводы. Динамические
  строки (provider sub, btn-toggle Configure/Done, key-test result,
  onboarding summary) тоже идут через i18n('key') с английским
  fallback'ом.
- options.js BUILTIN_PERSONAS: label/hint переведены на английский как
  default-locale текст; chrome.i18n при необходимости перекрывает
  локализованными строками (TODO: добавить persona-* ключи в _locales
  следующей итерацией).
- content_script.js: hardcoded русские titles/placeholders ("Эмодзи",
  "Написать промт", "Ваш промт к посту…", "Отправка…", "Ошибка
  генерации") выведены через tta_i18n('cs_*') с английским fallback'ом.
- content_script.js STYLES: значения переведены на английский, autonyms
  языков в LANGS оставлены как есть.
- cleanupXLabels: список "Перевести пост" расширен до Set с английским
  вариантом, чтобы работало в обеих локалях X.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@froggychips froggychips merged commit ad3bccb into main May 19, 2026
1 check failed
@froggychips froggychips deleted the review/phase-2-i18n branch May 19, 2026 08:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant