Skip to content

About

Бесплатный переводчик для macOS. Приложение переводит текст онлайн через публичную точку Google Translate и умеет использовать офлайн-перевод Apple Translation, если нужные языковые пакеты уже установлены в системе. Проект распространяется бесплатно по лицензии MIT.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Translator для macOS

Бесплатный переводчик в строке меню 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+):

  1. Попробуйте открыть приложение обычным двойным щелчком (появится предупреждение — закройте его кнопкой «Готово», не «Переместить в Корзину»).
  2. Откройте Системные настройки → Конфиденциальность и безопасность.
  3. Внизу раздела «Безопасность» найдите строку про заблокированный Translator и нажмите «Открыть всё равно» (Open Anyway).
  4. Подтвердите открытие в появившемся диалоге.

Способ 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 в активной программе.

Как выдать разрешение:

  1. Откройте настройки Translator.
  2. Нажмите кнопку выдачи доступа.
  3. Включите Translator в настройках macOS: «Конфиденциальность и безопасность» -> «Универсальный доступ».
  4. Перезапустите приложение, если 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.sh

DMG будет создан в 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 подпись.

Публикация релиза через GitHub Actions

В репозитории есть 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.

Подготовка к Mac App Store

В проект добавлены базовые файлы для 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.

CLI-режимы для проверки

После сборки можно запустить:

./.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.

About

Бесплатный переводчик для macOS. Приложение переводит текст онлайн через публичную точку Google Translate и умеет использовать офлайн-перевод Apple Translation, если нужные языковые пакеты уже установлены в системе. Проект распространяется бесплатно по лицензии MIT.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages