@pingstray/paperclip-lang-ru
v1.0.23
Published
Russian language pack for Paperclip UI
Readme
paperclip-lang-ru
Русский языковой пакет для Paperclip. Позволяет переключить интерфейс на русский язык без изменения исходного кода Paperclip.
Поддерживаемые языки:
- 🇷🇺 Русский
- 🇺🇸 English (по умолчанию)
Как работает
Плагин монтируется через слот globalToolbarButton и добавляет в верхнюю панель инструментов выпадающий список выбора языка. После выбора русского языка плагин использует MutationObserver для отслеживания изменений в DOM и заменяет текстовые узлы с английским текстом на русские эквиваленты.
Особенности:
- Перевод текста и атрибутов (
placeholder,aria-label,title,alt) - Перевод динамически создаваемого контента
- Сохранение языковых предпочтений в
localStorage - Работает с ANY страницей Paperclip (Dashboard, Issues, Routines, Goals, Settings, Onboarding и т.д.)
Установка
Через Plugin Manager (рекомендуется)
- Откройте Paperclip → Instance Settings → Plugins
- Нажмите Install Plugin
- Введите:
@pingstray/paperclip-lang-ru- Нажмите Install, дождитесь завершения
- Переключите язык на Русский в появившемся меню
Сборка из исходников (Windows)
Требования: Node.js 18+, pnpm
# Клонировать в папку с плагинами Paperclip
cd <путь-к-paperclip>/packages/plugins
git clone https://github.com/liteflesh-netizen/paperclip-lang-ru.git
# Установить зависимости
cd paperclip-lang-ru
pnpm install
# Собрать плагин
pnpm build
# Установить через Plugin Manager (шаг 2-4 выше)Использование
Переключение языка (панель инструментов)
После установки в верхней панели появится кнопка выбора языка:
🇷🇺 Русский ▾Нажмите → выберите язык → страница автоматически обновится с переводом.
Переключение языка (страница настроек)
- Instance Settings → Plugins
- Найдите Language Pack → нажмите
- Выберите язык → Save & Reload
Что переведено
- [x] Dashboard (дашборд)
- [x] Goals (цели)
- [x] Issues (задачи)
- [x] Routines + Recent Runs (рутины + недавние запуски)
- [x] Inbox / Mine / All (входящие)
- [x] Agents (агенты)
- [x] Company Settings (настройки компании)
- [x] Instance Settings / Experimental (настройки инстанса)
- [x] Onboarding (включая примеры полей)
- [x] Finance / Costs (финансы / расходы)
- [x] Org Chart (орг. структура)
- [x] Adapter environment check (проверка адаптера)
- [x] Plugin Manager (установка / удаление плагинов)
- [x] UI атрибуты: placeholder, aria-label, title, alt
700+ строк перевода
Известные ограничения
| Ограничение | Описание | |-------------|----------| | Динамический контент | Всплывающие окна и меню могут кратковременно показывать английский текст | | Обновления Paperclip | Новые строки интерфейса нужно добавлять вручную в словарь перевода | | localStorage | Очистка браузера сбрасывает языковые настройки | | Текст в изображениях | Текст внутри картинок/SVG не заменяется |
Решённые проблемы
Windows: плагин не запускался из-за ESM-путей
Проблема: Worker плагина не стартовал на Windows — происходила ошибка загрузки ESM-модуля.
Причины и решения:
1. Windows ESM-путm: Абсолютные Windows-пути вида D:\path\to\worker.js не являются валидными ESM-спецификаторами.
Решение: Обёртка plugin-worker-wrapper.mjs преобразует пути в file:///D:/path/to/worker.js.
2. Проверка argv в worker: Функция runWorker проверяет process.argv[1], чтобы определить, является ли модуль точкой входа. При импорте через обёртку эта проверка всегда возвращает undefined.
Решение: Обёртка напрямую вызывает startWorkerRpcHost из SDK, обходя проверку argv.
3. Резолвинг SDK: Обёртка не могла резолвить @paperclipai/plugin-sdk через npm.
Решение: Используется прямой путь к SDK в файловой системе.
Изменённые файлы в paperclip-local:
server/src/services/plugin-worker-manager.ts—spawnProcessиспользует обёртку на Windowsscripts/plugin-worker-wrapper.mjs— загружает worker и вызываетstartWorkerRpcHostнапрямую
Разработка
# Сборка (tsc + esbuild)
pnpm build
# Проверка типов
pnpm typecheck
# Очистка
pnpm cleanПроцесс сборки:
| Шаг | Утилита | Результат |
|-----|---------|-----------|
| 1. Компиляция manifest | tsc | dist/manifest.js, dist/*.d.ts |
| 2. Упаковка worker | esbuild | dist/worker.js (~240kb, автономный) |
| 3. Упаковка UI | esbuild | dist/ui/index.js (~150kb) |
Важно для Windows: Worker-плагин загружается через обёртку plugin-worker-wrapper.mjs, которая корректно преобразует Windows-пути в file:// URL для ESM. Эта обёртка находится в paperclip-local/scripts/ и автоматически используется при старте worker-процесса.
Структура проекта
paperclip-lang-ru/
├── package.json
├── tsconfig.json
├── README.md
├── scripts/
│ ├── build-worker.mjs # esbuild worker
│ └── build-ui.mjs # esbuild UI
└── src/
├── manifest.ts # Объявление плагина
├── worker.ts # Worker (логика плагина)
├── index.ts # Экспорт пакета
└── ui/
├── index.tsx # UI компоненты
├── LangSwitcher.tsx # Переключатель языка
├── LangSettingsPage.tsx # Страница настроек
├── domTranslator.ts # MutationObserver движок
├── translations.ts # Код языка → словарь
└── locales/
├── registry.ts # Регистрация языков
└── ru.ts # Русский словарь (700+ ключей)License
MIT
Авторы
liteflesh-netizen — GitHub
Страница проекта: https://github.com/liteflesh-netizen/paperclip-lang-ru
