Бесплатный переводчик в строке меню macOS. Приложение переводит текст онлайн через публичную точку Google Translate и умеет использовать офлайн-перевод Apple Translation, если нужные языковые пакеты уже установлены в системе.
Проект распространяется бесплатно по лицензии MIT.
- Приложение в строке меню без иконки в Dock.
- Онлайн-перевод без API-ключей.
- Офлайн-перевод через Apple Translation.
- 12 языков перевода: русский, английский, испанский, немецкий, французский, итальянский, португальский, китайский, японский, корейский, турецкий, украинский.
- Мультиязычный интерфейс: автоматически использует язык macOS или выбранный вручную язык приложения.
- Автоматическое определение исходного языка.
- Глобальные горячие клавиши для перевода выделенного текста и буфера обмена.
- Системная служба macOS для перевода выделенного текста без разрешения «Универсальный доступ».
- История последних 10 переводов.
- Озвучивание исходного текста и результата.
- Счётчик и ограничение в 5000 символов за один перевод.
- Три размера панели: компактная, стандартная и широкая.
- Режим «Только офлайн», который полностью отключает запросы к Google.
- Индикатор приватности: видно, был ли использован Google онлайн или Apple на устройстве.
- Окно первого запуска для разрешений, горячих клавиш, офлайн-языков и выбора темы.
- Менеджер офлайн-языков с необязательными уведомлениями об обновлении.
- Ручная проверка обновлений через URL GitHub Releases API.
- Три стеклянные темы: Calm Glass, Neon Glass и Frost Glass.
- Акцентный цвет темы подстраивается под системный цвет macOS.
- macOS 15 или новее.
- Xcode со Swift 6 toolchain.
- Для офлайн-перевода нужны поддерживаемые языковые пакеты Apple Translation.
Скачайте или соберите Translator.app, затем перенесите приложение в /Applications.
Приложение собирается как universal binary (Apple Silicon и Intel), поэтому работает на обоих типах процессоров Mac.
Чтобы запускать приложение автоматически при входе в систему, откройте настройки Translator и включите «Запускать при входе в систему».
Приложение распространяется без нотаризации Apple, поэтому при первом запуске скачанной сборки macOS может показать сообщение вроде «Apple не удалось подтвердить, что файл „Translator.app“ не содержит вредоносного ПО». Это ожидаемо и не связано с типом процессора. Обойти защиту можно одним из способов.
Способ 1 — через «Конфиденциальность и безопасность» (рекомендуется на macOS 15+):
- Попробуйте открыть приложение обычным двойным щелчком (появится предупреждение — закройте его кнопкой «Готово», не «Переместить в Корзину»).
- Откройте
Системные настройки→Конфиденциальность и безопасность. - Внизу раздела «Безопасность» найдите строку про заблокированный Translator и нажмите «Открыть всё равно» (Open Anyway).
- Подтвердите открытие в появившемся диалоге.
Способ 2 — через Терминал (снять карантин вручную):
xattr -dr com.apple.quarantine /Applications/Translator.appПосле этого приложение будет открываться обычным образом.
Нажмите на иконку Translator в строке меню, чтобы открыть панель перевода.
Основные действия:
- Введите текст в поле ввода. Если включён автоперевод, результат появится после короткой задержки.
- Выберите исходный и целевой языки в меню языков.
- Оставьте
Автокак исходный язык, чтобы приложение само выбрало направление перевода. - Нажмите кнопку со стрелками, чтобы поменять языки местами.
- Используйте кнопки динамика для озвучивания текста.
- Используйте кнопку копирования, чтобы скопировать результат.
- Откройте историю через кнопку с часами.
- Откройте настройки через кнопку с шестерёнкой.
- Измените размер панели в настройках, если нужно больше места для длинного текста.
- Включите режим «Только офлайн», если текст не должен отправляться в интернет.
| Сочетание | Действие | Разрешение |
|---|---|---|
Control + Option + T |
Перевести выделенный текст через имитацию Command + C |
Универсальный доступ |
Shift + Command + E |
Перевести выделенный текст через службу macOS | Не нужно |
Control + Option + C |
Перевести текст из буфера обмена | Не нужно |
Сочетания Control + Option + T и Control + Option + C можно изменить в настройках приложения.
Сочетание для системной службы можно изменить в macOS:
Системные настройки -> Клавиатура -> Сочетания клавиш -> Службы
Горячая клавиша для выделенного текста (Control + Option + T) требует разрешение «Универсальный доступ», потому что приложение имитирует Command + C в активной программе.
Как выдать разрешение:
- Откройте настройки Translator.
- Нажмите кнопку выдачи доступа.
- Включите Translator в настройках macOS: «Конфиденциальность и безопасность» -> «Универсальный доступ».
- Перезапустите приложение, если macOS попросит это сделать.
Системная служба (Shift + Command + E) не требует «Универсальный доступ», потому что macOS сама передаёт выделенный текст приложению.
Откройте «Офлайн-языки…» внизу панели перевода.
Английский отображается как базовый язык. Остальные языки скачиваются как пары с английским. После установки нужных языков приложение сможет переводить без интернета.
Приложение периодически проверяет статус доступности ранее установленных офлайн-языков Apple Translation. Если macOS сообщает, что язык нужно подготовить заново, Translator показывает небольшое необязательное уведомление. Обновление не принудительное.
Apple не предоставляет публичный номер версии для офлайн-языковых пакетов Translation, поэтому приложение проверяет системный статус доступности, а не сравнивает версии пакетов.
В приложении есть ручная проверка обновлений. Чтобы включить её для публичного GitHub-репозитория, добавьте в Info.plist ключ TranslatorLatestReleaseURL и укажите endpoint последнего релиза:
https://api.github.com/repos/<owner>/<repo>/releases/latest
Если ключ не настроен, окно настроек покажет, что проверка обновлений не включена. Приложение не устанавливает обновления автоматически.
В приложении есть три темы:
Calm Glass— светлое бело-мятное стекло с зелёным акцентом. Используется по умолчанию.Neon Glass— тёмное стекло с неоновым свечением.Frost Glass— светлое матовое стекло с системным акцентом.
На новых версиях macOS приложение использует SwiftUI Liquid Glass API, если они доступны. На более старых поддерживаемых версиях используется полупрозрачный системный material.
Клонируйте репозиторий и выполните:
swift build -c release
./build_app.sh
open Translator.appЧтобы создать DMG для распространения:
./build_dmg.shDMG будет создан в dist/Translator.dmg. Внутри будут Translator.app, README.md и LICENSE.
Скрипт сборки компилирует universal binary (--arch arm64 --arch x86_64), создаёт Translator.app, копирует иконку и Info.plist, очищает extended attributes, которые могут мешать подписи, и подписывает bundle. Если найден сертификат Apple Development, используется он. Если сертификата нет, применяется ad-hoc подпись.
В репозитории есть workflow .github/workflows/release.yml. Он собирается на GitHub-hosted runner macos-26, чтобы использовать Xcode 26 SDK для новых SwiftUI API.
Workflow работает в двух режимах:
workflow_dispatch— ручной запуск из вкладки Actions. GitHub соберётdist/Translator.dmgи сохранит его как artifact.- push тега
v*— GitHub соберёт DMG и прикрепит файл к GitHub Release.
Чтобы выпустить новую версию:
git tag v1.2
git push origin v1.2После завершения workflow файл Translator.dmg появится в разделе Releases.
В проект добавлены базовые файлы для App Store-подготовки:
Translator.entitlements— включает App Sandbox и исходящие сетевые подключения.PrivacyInfo.xcprivacy— декларирует использованиеUserDefaultsдля локальных настроек и истории.LSApplicationCategoryType— категорияpublic.app-category.utilities.build_app_store_pkg.sh— создаёт.pkgдля загрузки в App Store Connect при наличии Mac App Store certificates.
Сборка .pkg требует сертификаты Apple Developer Program:
APP_STORE_APP_SIGNING_IDENTITY="3rd Party Mac Developer Application: Your Name (TEAMID)" \
APP_STORE_INSTALLER_SIGNING_IDENTITY="3rd Party Mac Developer Installer: Your Name (TEAMID)" \
./build_app_store_pkg.shДля App Store-версии стоит проверить продуктовую политику: приложение сейчас умеет проверять обновления через GitHub Releases для direct distribution. Если сборка пойдёт именно в Mac App Store, обновления лучше получать через App Store, а ключ TranslatorLatestReleaseURL можно не добавлять в App Store build.
После сборки можно запустить:
./.build/release/Translator --test-translate "hello world"
./.build/debug/Translator --test-offline
./.build/debug/Translator --test-apple "hello world"
./.build/release/Translator --test-service "hello world"Package.swift
Info.plist
build_app.sh
build_dmg.sh
build_app_store_pkg.sh
make_icon.swift
Translator.entitlements
Sources/Translator/
TranslatorApp.swift
TranslatorView.swift
TranslationService.swift
GoogleTranslateEngine.swift
FloatingPanel.swift
BubblePanel.swift
SettingsStore.swift
SettingsView.swift
FirstRunView.swift
DownloadWindow.swift
HistoryWindow.swift
UpdateChecker.swift
HotkeyManager.swift
SelectionGrabber.swift
TextInserter.swift
MenuBarIcon.swift
Theme.swift
DebugLog.swift
Онлайн-перевод отправляет переводимый текст на endpoint Google Translate. Если включён режим «Только офлайн», запросы к Google не выполняются.
Офлайн-перевод использует Apple Translation на устройстве после установки нужных языковых пакетов.
Настройки и последние элементы истории переводов сохраняются локально в UserDefaults.
MIT License. Подробности в LICENSE.