Skip to content

Latest commit

 

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Русский язык для Orca — русификатор интерфейса

Языковой пакет, переводящий интерфейс 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.

Установка

Способ 1 — через маркетплейс (рекомендуется)

Orca сама предложит обновление, когда выйдет новая версия перевода.

  1. Settings → Plugins — включить систему плагинов

  2. Marketplace sources → Add source, вставить адрес:

    https://github.com/imgusev/orca-plugins.git
    
  3. На вкладке All найти «Русский язык для Orca» и нажать Install

  4. Settings → Appearance → Language — выбрать русский

Способ 2 — по Git URL

Без добавления источника, одной ссылкой. Обязателен явный #ref — без него Orca откажет, чтобы установка была привязана к конкретной версии:

Settings → Plugins → Install plugin → Git URL

https://github.com/imgusev/orca-plugin-ru.git#v1.4.192

Способ 3 — локальная папка

Подходит, если правите перевод у себя.

git clone https://github.com/imgusev/orca-plugin-ru.git ~/orca-plugin-ru

Settings → 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 официально.

About

Русификатор Orca (Stably ADE) — языковой пакет: 98% интерфейса на русском, штатный contributes.languagePacks. Russian language pack for Orca

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages