TTyko

Пакети / Мови

@tykonpm/multilang

v0.4.0

29 мов з українським джерелом, React-провайдер, адмінка й черга перекладу сайту.

$ npm i @tykonpm/multilang

Для вайбкодінг- та ШІ-платформ: Cursor, Bolt, Windsurf та інших. Прочитай README.md і TRANSLATE-ALL.md установленого пакета. Не копіюй реалізацію пакета в src, не замінюй router і затверджений дизайн.

Готове завдання

Підключи @tykonpm/multilang до цього сайта. Українська — джерело. Перевір npm version і exports: якщо /translate-all ще не опубліковано, повідом це й не імітуй наявність модуля. Прочитай node_modules/@tykonpm/multilang/README.md, TRANSLATE-ALL.md та AI-GUIDE.md; зафіксуй перевірену версію в lockfile.

Збережи UI. Додай MultilangProvider, useT/T, lazy-словники та LanguageSwitcher через render prop під дизайн сайта. Store overrides мають перевагу; fallback — українська. Не створюй мовні URL/hreflang без вимоги. Збери літеральні фрази CLI і перевір результат; CMS зареєструй окремими TranslationSource зі стабільними key, uk text, current/currentHash. Coverage охоплює тільки зареєстровані джерела.

Додай захищену адмінку TranslateAllPanel: рядки — джерела, стовпці — мови; запуск по клітинці, рядку, мові та всьому сайту. Panel містить Review: відкриття job у черзі показує перевірку. За потреби використовуй окремі компоненти. Вибір одного пункту реалізуй через scope item/keys і власний список. mode missing — відсутні й застарілі; mode all — повторно все. Stale залежить від hash uk text, не en. Записи без hash не стають stale автоматично; перейменовані текстові ключі простої адмінки потребують міграції або стануть missing.

Забезпеч обидва режими: autoApply true та ручна перевірка false. Review застосовує один пункт або всі успішні пункти одного job, не всього сайта. Для затвердження джерела/черги зроби явний вибір jobs і підтвердження. Не змінюй дизайн заради готового UI: classNames/labels або власний екран на API.

Реалізуй TranslationProvider через підтримуваний серверний SDK/сервіс сайта, без прив’язки ядра пакета до провайдера. Ключі тільки на сервері. Маскування й глосарій не є HTML-санітизацією. Поясни бюджет перед новими платними підключеннями.

Реалізуй стійкий JobStore на існуючому сховищі. Не створюй дубль бази/акаунтів. Supabase адаптер необов’язковий; default list limit 500, для великої черги потрібна повна пагінація. Не застосовуй SQL без аналізу схеми/grants/RLS/ролей. ui_translations має lang/source/text/source_hash/origin/updated_at і unique(lang, source); SQL-помічник сам не створює повну таблицю.

TranslateAllApi у браузері — proxy до захищених handler-ів. Перевір session/роль/source/job у КОЖНОМУ coverage/plan/enqueue/jobs/processNext/action/apply. createdBy бери із session. Source.apply атомарно звіряє previous та hash актуального українського джерела; конфлікт не перезаписує. Privileged client не використовуй для звичайного читання.

plan — dry-run; сервер відхиляє overLimit/завеликі пакети до enqueue, бо maxJobTokens не забезпечується виконанням автоматично. Денний облік приблизний; для жорсткого бюджету потрібен ledger. Один процесор або зовнішній lock; немає built-in глобального дедупу/exactly-once. pause/cancel не переривають поточний запит. Reload зберігає jobs, але для фонового виконання потрібен worker сайта.

Перевір поведінку: item/source/site, клітинка/рядок/мова/все, missing/all, зміна hash uk, previous/source conflict, manual/auto apply, retry/timeout/маркери, reload, права. Почни з mock без витрат; один реальний AI-пакет окремо з дозволеним бюджетом. Перевір читання результату в UI під належною роллю. Не називай real AI перевіреним за mock.

Прийняття й оновлення

Повідом установлену версію, джерела, перевірені сценарії та обмеження. Не обіцяй весь сайт перекладеним за часткового реєстру; не стверджуй production/npm-публікацію без доказу.

Для оновлення: прочитай changelog і документи нового npm-релізу, збережи адаптери/ролі/дизайн, перевір exports та наскрізний plan → enqueue → review → apply → read back. Не копіюй пакет у src.