Языковой пакет, переводящий интерфейс Orca на русский — 13 596 из 13 785 строк (98%). Речь про Orca от Stably AI — среду разработки агентов (ADE), а не про экранный диктор GNOME, редактор MSI или OrcaSlicer.
Russian language pack for Orca (Stably AI agent IDE / ADE): 98% of the UI translated, installed as a normal Orca plugin — no patching of the app.
Ставится через маркетплейс за пару кликов, обновляется вслед за приложением: номер версии пакета совпадает с версией Orca, под которую собран каталог.
Собран для Orca 1.4.192, работает начиная с 1.4.169. Версия сборки — в ORCA_VERSION, нижняя граница совместимости — в COMPAT.
Реализован штатным механизмом Orca (contributes.languagePacks): исходники приложения не патчатся, при обновлении Orca ничего не ломается. Непереведённые строки автоматически показываются по-английски — i18next делает fallback.
Orca обновляется почти ежедневно, но строки меняются заметно реже. Пакет от предыдущей версии продолжает работать: новые строки просто останутся английскими, пока их не добавят в словари.
Версия пакета повторяет версию Orca, из которой сняты строки, — один в один, включая патч. Каталог собран под Orca 1.4.192 → пакет 1.4.192, тег v1.4.192. Так по карточке плагина сразу видно, какой версии приложения соответствует перевод, без сверки с ORCA_VERSION.
Одно следствие стоит держать в голове: выпустить исправление перевода, не меняя версию Orca, схема не позволяет. Валидатор манифеста требует строгий semver — четвёртого сегмента (1.4.192.1) не существует, а 1.4.192-fix1 по semver младше 1.4.192 и обновлением не считается. Значит правка перевода ждёт ближайшего релиза Orca; выходят они почти ежедневно.
Версии 1.0.0–1.4.0 этому правилу не следуют — они нумеровались независимо, пока пакет не догнал приложение по линейке.
Обновление пакета почти всегда приходит раньше, чем пользователь обновит саму Orca, — поэтому каталог обязан оставаться валидным для всего диапазона поддерживаемых версий.
Опасен ровно один класс изменений: путь, разрешённый к переводу в новой Orca, но ещё защищённый в старой. Один такой ключ отклоняет каталог целиком, и язык молча выключается. Так, до 1.4.169 белого списка не существовало вовсе — вся зона settings.plugin* была закрыта, и нынешние 34 разрешённых пути сломали бы пакет.
Защита двойная:
tools/extract.pyсобираетallowed-chrome.txtпересечением белых списков минимальной поддерживаемой версии (файл COMPAT) и установленной — в каталог попадает только то, что разрешено везде;engines.orcaв манифесте равен>=этой же нижней границе, так что на более старую Orca пакет просто не установится — с внятной ошибкой вместо тихой поломки.
Лишние ключи опасности не представляют: валидатор не требует, чтобы ключ существовал в приложении, — каталог под 1.4.192 спокойно работает на 1.4.191.
Orca сама предложит обновление, когда выйдет новая версия перевода.
-
Settings → Plugins — включить систему плагинов
-
Marketplace sources → Add source, вставить адрес:
https://github.com/imgusev/orca-plugins.git -
На вкладке All найти «Русский язык для Orca» и нажать Install
-
Settings → Appearance → Language — выбрать русский
Без добавления источника, одной ссылкой. Обязателен явный #ref — без него Orca откажет, чтобы установка была привязана к конкретной версии:
Settings → Plugins → Install plugin → Git URL
https://github.com/imgusev/orca-plugin-ru.git#v1.4.192
Подходит, если правите перевод у себя.
git clone https://github.com/imgusev/orca-plugin-ru.git ~/orca-plugin-ruSettings → Plugins → Development → Add path и полный путь к папке. Каталог перечитывается на лету — после python3 tools/build.py перезапуск не нужен.
Обновление:
cd ~/orca-plugin-ru && git pullАнглийский каталог скачивается из репозитория Orca по тегу установленной версии — src/renderer/src/i18n/locales/en.json на v1.4.192, а не из main.
Это не педантизм: ключ, добавленный в main, но ещё не вышедший в релиз, валидатор установленной Orca не знает и отвергает — а отвергается весь каталог целиком, то есть язык просто перестаёт работать. Разбор минифицированного app.asar используется только как дополнение: оттуда добираются 152 ключа поиска по настройкам, которых в en.json нет.
Всё, кроме того, что переводить нельзя или бессмысленно: настройки целиком, терминал, редактор и diff, боковые панели, вкладки, палитры, задачи и автоматизации, GitHub, GitLab, Bitbucket, Linear, Jira, браузер и эмулятор, мобильный режим и сопряжение телефона, знакомство, навыки и обмен ими по ссылке, системные сообщения и ошибки.
Разбор оставшихся 189 строк — в UNTRANSLATED.md. Коротко: 180 защищены самой Orca (тексты про доверие к плагинам — подменять их запрещено валидатором), 7 переопределены по ключу, 2 CSS-блока не помещаются в лимит Orca на длину значения, 1005 оставлены в оригинале намеренно (команды, пути, имена продуктов, идентификаторы состояний). Строк, пропущенных по недосмотру, нет.
Термины держатся единообразно по всему интерфейсу:
| English | Русский | Примечание |
|---|---|---|
| workspace | рабочая область | ключевой термин |
| worktree | worktree | не переводится: git worktree — имя команды, и «рабочее дерево» путается с working tree |
| runtime | среда выполнения | |
| session | сессия | не «сеанс» |
| issue | задача | GitHub, GitLab, Linear, Jira |
| pull request | пул-реквест | аббревиатуры PR и MR не переводятся |
| review | ревью | |
| skill | навык | |
| usage | расход | |
| stage / unstage | в индекс / из индекса | |
| grant | разрешение | |
| pairing | сопряжение | |
| pane | панель | |
| quick command | быстрая команда |
Терминология выровнена по glossary из smwbev/orca-russian — чтобы у русских пакетов Orca не расходились слова. Расхождение одно, и оно намеренное: worktree мы оставляем латиницей.
Общие правила: безличные формы («Выберите», а не «Вы можете»), последовательная «ё», кавычки-ёлочки, длинное тире, многоточие символом ….
Формы числа. Русскому нужны четыре формы вместо английских двух. Там, где приложение зашивает выбор прямо в код (count === 1 ? …_one : …_other), каталог бессилен. Но у 66 ключей translate получает count, а суффикс не зашит — тогда суффикс подставляет сам i18next по правилам языка и спрашивает _few и _many, которых в английском каталоге нет. Такие формы лежат в tools/dict/plurals.json и доезжают до интерфейса: «1 навык», «2 навыка», «5 навыков», «21 навык».
Список ключей, принимающих count, extract.py собирает сам в plural-candidates.txt; build.py показывает, для скольких из них формы ещё не заданы, и ругается, если формы описаны для ключа, которому count не передают — такие записи в интерфейс не попадут.
Плейсхолдеры ({{value0}}, {{host}}, {{count}}) сохраняются везде — сборка это проверяет. Исключение: английский суффикс множественного числа, приклеенный к слову ({{value0}} label{{value1}}, где {{value1}} подставляет s), в переводе выбрасывается — иначе в интерфейсе выходит «меток: 3s». Сборка отличает такой суффикс от настоящего плейсхолдера и ругается, если он остался.
Orca обновляется ежедневно, новые строки приходят английскими.
cd tools
python3 extract.py # вытащить строки из установленной Orca → en-all.json + ORCA_VERSION
python3 build.py # собрать locales/ru.json и показать, чего не хватаетbuild.py печатает список непокрытых строк. Добавьте их в новый файл tools/dict/*.json — формат «английский текст» → «перевод» — и запустите сборку снова.
extract.py заодно перезаписывает ORCA_VERSION — версия попадает в коммит вместе с каталогом, так что всегда видно, под какую сборку он собран.
Белый список защищённой зоны (tools/allowed-chrome.txt) extract.py пересобирает сам — вручную его трогать не нужно.
Поднимать нижнюю границу в COMPAT стоит только осознанно: это отрежет пользователей на старых версиях, зато позволит переводить пути, разрешённые в новых. После правки COMPAT синхронизируйте engines.orca в манифесте.
Orca запрещает языковым пакетам подменять тексты, по которым пользователь решает, доверять ли плагину (auto.components.settings.Plugin*): «заблокирован», «требует проверки», источник установки, диалоги удаления.
Если хоть один такой ключ попадёт в каталог, валидатор отклонит весь пакет целиком с ошибкой catalog cannot replace protected security copy, а плагин упадёт с «The plugin stopped after an activation or worker error».
tools/build.py вырезает их автоматически; исключения — узкий белый список tools/allowed-chrome.txt, который extract.py собирает пересечением поддерживаемых версий (см. «Совместимость» выше). Защита правильная: подмена предупреждения безопасности на успокаивающий текст — это вектор атаки.
Диалоги установки, согласия и удаления плагина не переводятся вообще — там обещания о поведении («No plugin code runs until you enable it»), и подмена этих текстов была бы обманом.
orca-plugin.json манифест плагина
ORCA_VERSION версия Orca, из которой сняты строки
COMPAT минимальная версия Orca, на которой пакет обязан работать
locales/ru.json каталог переводов (13 596 ключей)
UNTRANSLATED.md что осталось английским и почему
tools/
build.py сборка каталога из словарей + проверки
extract.py каталог en.json по тегу релиза + добор из app.asar + белый список
dict/*.json словари переводов по этапам
dict/by-key.json переопределения для конкретных ключей
dict/plurals.json русские формы числа (_one/_few/_many/_other)
allowed-chrome.txt белый список для защищённой зоны
plural-candidates.txt ключи, которым приложение передаёт count
MIT — как и сама Orca.
Английские оригиналы строк принадлежат stablyai/orca и используются на условиях её лицензии MIT. Проект не связан со Stably AI официально.