Браузерное расширение (Manifest V3) для перевода интерфейса GitHub на русский язык. Работает с github.com, *.github.com и github.dev.
Главный принцип: переводим только UI, не трогаем код, имена и пользовательский контент.
- Откройте
chrome://extensions. - Включите «Режим разработчика».
- Нажмите «Загрузить распакованное» и выберите папку с этим проектом.
- Откройте любую страницу GitHub и обновите её.
Manifest V3 в Firefox имеет нюансы. Для разработки:
- Откройте
about:debugging#/runtime/this-firefox. - Нажмите «Загрузить временное дополнение…» и выберите
manifest.json.
Главная страница репозитория, настройки и Insights — всё на русском:
- Навигация (шапка, меню, dashboard).
- Кнопки и формы (Save, Cancel, Create…).
- Метки разделов на странице репозитория, PR и Issues.
- Сообщения чек-листов и CI, фильтры, пагинация.
- Подписи в Settings (личных, репозитория, организации).
- Вкладка Insights (Pulse, Contributors, Community, Traffic, Commits, Code frequency, Dependency graph, Network, Forks, Actions metrics).
- Вкладка Security (Overview, Dependabot, Code scanning, Secret scanning, Policy, Advisories).
- Раздел уведомлений.
- Относительные даты («2 days ago» → «2 дня назад»).
<<<<<<< HEAD
- Новый модуль discussions.js — вкладка Discussions: категории (Announcements/Ideas/Polls/Q&A/Show and tell), статусы ответов, голосование, формы.
- Большое расширение settings.js: разделы Security, SSH/GPG keys, Emails, Notifications, Appearance, Applications, Developer settings, Billing.
- profile.js: добавлены Gists, Sponsors, Organizations, страницы /stars и /repositories.
- explore.js: переведены
/marketplaceи/marketplace/new(Apps, Models, Pricing Plans, листинг инструмента). - repo.js: страница
/contributeи пустое состояние/projects. - pr.js: пустое состояние
/pullsи фильтр Reviews (Approved review, Reviewed by you и др.). - issues.js: переведены попапы фильтров Filter by author/assignee/label/project/milestone/reviewer.
- actions.js: страница
/actions/new(Get started, категории, блок «Learn more»). - insights.js: пустое состояние
/forks, переключатель Switch to tree view. - common.js: общие сообщения «Try adjusting your filters», лоадер «Crunching the latest data…».
=======
b233700ae40a269a5e416996bfe03aa9284bb265
- Содержимое
<code>,<pre>, diff, blob и любых редакторов кода. - README, wiki, тело issues и PR, комментарии.
- Имена репозиториев, веток, тегов, файлов.
- Имена пользователей и организаций (
@username,org/repo). - SHA-хэши, номера PR/issue, URL.
- Бренды и команды Git (
git commit,push,merge,rebase,HEAD,main,origin). - Названия продуктов:
GitHub Actions,Codespaces,Copilot,Dependabot,Marketplace,Pages,Discussions,Packages,Projects,Sponsors.
- Иконка расширения — popup с быстрым переключателем перевода и уровнем.
- Alt + Shift + L — горячая клавиша toggle.
- Страница настроек — выбор уровня, режим «показать оригинал в скобках», список исключений.
- Минимальный — только навигация и общие кнопки.
- Стандартный — плюс репозитории, задачи, пул-реквесты, профиль, уведомления, Insights.
- Полный — включая Settings, GitHub Actions и Security.
github-russian/
├── manifest.json — Manifest V3 + content scripts
├── background.js — service worker (настройки, hotkey)
├── src/
│ ├── utils/
│ │ └── plural.js — русская плюрализация
│ ├── dictionary/
│ │ ├── common.js — общие кнопки и формы
│ │ ├── nav.js — шапка и dashboard
│ │ ├── repo.js — страница репозитория
│ │ ├── pr.js — Pull Requests
│ │ ├── issues.js — Issues
│ │ ├── actions.js — GitHub Actions
│ │ ├── settings.js — Settings (личные, репо, организация)
│ │ ├── profile.js — Профиль
│ │ ├── notifications.js — Inbox
<<<<<<< HEAD
│ │ ├── discussions.js — Discussions
│ │ ├── insights.js — вкладка Insights
│ │ ├── security.js — вкладка Security
│ │ ├── search.js — страница поиска
│ │ ├── explore.js — Explore, Trending, Marketplace
=======
│ │ ├── insights.js — вкладка Insights
│ │ ├── security.js — вкладка Security
>>>>>>> b233700ae40a269a5e416996bfe03aa9284bb265
│ │ ├── time.js — относительное время (regex)
│ │ ├── user-extras.js — место под пользовательские добавки
│ │ └── index.js — агрегатор + уровни
│ ├── content/
│ │ ├── prehide.css — pre-hide, чтобы не мигало по-английски
│ │ ├── guard.js — isTranslatable(), блеклист
│ │ ├── translator.js — TreeWalker + MutationObserver
│ │ └── content.js — точка входа
│ ├── popup/ — popup
│ └── options/ — страница настроек
├── icons/ — иконки (положите свои 16/48/128)
├── tools/ — вспомогательные скрипты сверки словаря
├── README.md
├── CONTRIBUTING.md
├── GLOSSARY.md
└── LICENSE
- На
document_startcontent-скрипт добавляет классghru-prehide, который скрывает body. - Из
chrome.storage.syncчитаются настройки и собирается индекс перевода под выбранный уровень. - По DOM проходит
TreeWalker, заменяет текстовые узлы и переводимые атрибуты (aria-label,title,placeholder,alt,valueу submit-кнопок,data-confirm). - Перед заменой каждый узел проверяется через
isTranslatable()— у нас глубокий blacklist по тегам, селекторам и атрибуту[data-ghru-skip]. - После первого прохода
ghru-prehideснимается. MutationObserverловит SPA-обновления и точечно дотранслирует новые поддеревья. Также подписаны Turbo-события (turbo:load,turbo:render,turbo:frame-load) и оборачиваетсяhistory.pushState/replaceState.- Уже переведённые узлы отмечаются (
WeakSet), а оригиналы сохраняются вWeakMap— это позволяет мягко откатывать перевод при отключении.
- Главная (dashboard) — лента, сайдбар.
- Страница репозитория — все вкладки.
- Просмотр файла — код не переведён, имя файла не переведено.
- Просмотр PR — diff и тело PR не переведены, UI вокруг — да.
- Создание Issue/PR — placeholder'ы переведены, ввод в textarea не трогается.
- Settings (личные + репо).
- Поиск — фасеты переведены, результаты — нет.
- Actions — UI переведён, имена workflow и логи не переведены.
- Insights — Pulse, Contributors, Community, Traffic и т.д.
- Security — Overview и под-вкладки.
- Discussions — UI, контент — нет.
- Profile — UI, био и закреплённые репозитории — нет.
- Organization, Teams.
- Copilot / Codespaces — названия не переводятся.
- Gist — UI.
- Notifications inbox.
MIT — см. LICENSE.


