План stage11 i18n
stepan edited this page 2026-09-13 00:17:00 +03:00
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.

Перенесено из репозитория (docs/superpowers/plans/2026-09-10-deal-stage11-i18n.md). Актуальная версия — здесь, в вики.

Дейл (Deal) — Этап 11: Локализация интерфейса (i18n)

Исторический документ этапа 11. Актуальное состояние — docs/superpowers/STATUS.md и docs/technical/Техническая-документация-Дейл.md.

Статус: план (не начат). Требование владельца от 2026-09-10. Связанные документы: docs/superpowers/plans/2026-09-05-deal-roadmap.md (Этап 11), docs/spec/ТЗ-дейл-новая-архитектура.md (§11, локализация), docs/superpowers/STATUS.md (Заделы).

Цель

Весь интерфейс — на русском; все пользовательские тексты вынесены в ресурсы (словари), чтобы можно было добавлять новые языки и менять язык на лету. Русский — язык по умолчанию.

Требования

  • Русский по умолчанию. Все видимые строки UI: экраны, кнопки, подписи, заголовки, пустые состояния, подсказки, тултипы, тексты подтверждений, уведомления/тосты, страницы оператора и активации инвайта.
  • Без хардкода. Ни одна пользовательская строка не хранится в компонентах/шаблонах напрямую — только ключ в словаре. Технические строки (id/ключи/логи) не локализуются.
  • Ошибки API. Ответы бэка остаются {detail} + HTTP-код; фронт показывает локализованный текст по коду/ключу ошибки (расширяемый словарь ошибок). При необходимости бэк отдаёт код ошибки, а не только текст.
  • Переключение на лету. Смена языка без перезагрузки страницы; выбранный язык сохраняется (localStorage/настройки пользователя) и восстанавливается при входе.
  • Расширяемость. Новый язык = новый файл словаря (+ регистрация), без правок компонентов.
  • Форматирование. Даты/время/числа/валюты — через i18n-форматтеры; плюрализация — по правилам языка. Бэкенд-форматирование human-меток («только что», «N мин») — перевести на клиентские форматтеры или ключи.
  • Ключи. Стабильные, сгруппированные по областям (nav/, cards/, settings/, operator/, errors/…). Отсутствующий ключ в языке → фолбэк на русский (и, при необходимости, лог о пропуске).

Область

  • Основное приложение: дашборд, «Выбранные», настройки (все вкладки), каналы, обработка/состояние, вход.
  • Оператор-консоль (этап 10): все разделы + страница активации инвайта.

Объём (по факту кода на 2026-09-10)

  • 69 .vue + 20 .js; ~708 строковых литералов на кириллице в ~67 файлах (components ≈478, views ≈300, store ≈82) + текст прямо в шаблонах.
  • Области: навигация/шапка, карточки и колонки, драйвер карточки, настройки (все вкладки), каналы, обработка/состояние, вход, оператор-консоль (все разделы), страница активации, тосты/подтверждения.

Решение владельца (2026-09-10)

  • На этом этапе — только русский. Переключатель языка и второй язык — в бэклоге: делаем, когда возникнет потребность (см. «Отложено» ниже).
  • Задача этапа — вынести все строки в ресурсы, чтобы язык можно было добавить позже без правок компонентов.
  • Визуал и тексты — 1:1 с текущими (вынос не меняет отображаемый текст).

Задачи

  • T1. i18n-ядро (без тяжёлых зависимостей). Composable/модуль: t(key, params), реактивный locale (значение по умолчанию ru), setLocale() (архитектурно готов, UI-переключателя нет), загрузка словарей, фолбэк на ru при отсутствии ключа. src/i18n/ + locales/ru.js.
  • T2. Инвентаризация и словарь ru. Вынести все строки в locales/ru.js, ключи сгруппированы по областям (common/, nav/, cards/, drawer/, settings/, channels/, processing/, auth/, operator/, join/, errors/). Значения — 1:1 с текущими.
  • T3. Миграция основного приложения на t() (компоненты + вьюхи + store-слайсы).
  • T4. Миграция оператор-консоли и страницы активации (operator/, join/).
  • T5. Локализация ошибок/статусов. Маппинг известных {detail}/HTTP-кодов и статусов на ключи (errors/*); неизвестное — как есть.
  • T6. Проверки. Скрипт-«линтер»: нет кириллицы в шаблонах/логике вне словарей; npm run build зелёный.
  • T7. Доки и STATUS. Инструкция/техдок: устройство i18n и как добавить язык позже.

Отложено (в бэклоге — делаем при появлении потребности)

  • Переключатель языка в UI и второй язык (en) — при потребности (ядро/registerLocale готовы).
  • Форматтеры Intl/плюрализация — вместе с языком.

Границы

  • Машинный автоперевод не делаем — словари добавляются вручную.
  • Локализация писем/внешних уведомлений — если появятся, отдельной задачей.