Реализация бота-переводчика в мобильном приложении
Бот-переводчик — это не просто вызов Translation API. Интересные сценарии начинаются там, где нужно сохранять контекст диалога, переключаться между языками на лету и работать offline. Именно эти детали разделяют «переводчик, который работает» и «переводчик, который работает хорошо».
Выбор Translation API
DeepL API. Лучшее качество перевода для европейских языков. Free tier — 500K символов/месяц. Поддерживает формальный/неформальный тон (formality параметр) — важно для делового контента. Не поддерживает русский → другие языки на уровне Google/Yandex.
Google Cloud Translation API. 100+ языков, высокое качество для русского. v3 поддерживает glossary — словарь терминов, которые нельзя переводить или нужно переводить строго определённым образом. Для медицины, юридических текстов, брендовых названий — обязательная функция.
Yandex Translate API. Лучшие результаты для русского ↔ европейские языки. Language detection встроен. Хороший выбор для приложений с русскоязычной аудиторией.
LLM (GPT-4o / Claude). Контекстуальный перевод с учётом тона и стиля. Выигрывает на специализированных текстах, идиомах, юморе. Дороже и медленнее специализированных API для простых переводов.
Ключевые технические задачи
Определение языка. Пользователь вводит текст — бот должен понять, с какого языка переводить. Либо явный выбор через пикер, либо автодетект. Google Translation API возвращает detectedSourceLanguage в ответе. Для Yandex — lang в ответе.
Автодетект хорошо работает для длинных текстов, плохо — для одного-двух слов. Короткие запросы: лучше предлагать выбор языка явно.
Контекст диалога. Если пользователь переводит серию связанных сообщений (диалог, документ по частям) — LLM с историей переводов даёт более последовательный результат, чем независимые вызовы к Translation API. Имена, местоимения, специфичные термины сохраняются в контексте.
Терминологический глоссарий. Google Translation v3 Glossary API позволяет создать список терминов, которые модель не должна переводить или переводит строго определённым образом:
from google.cloud import translate_v3
client = translate_v3.TranslationServiceClient()
# Создание глоссария из CSV: original_term,translation
glossary = client.create_glossary(
parent=f"projects/{project_id}/locations/us-central1",
glossary=translate_v3.Glossary(
name=glossary_name,
language_pair=translate_v3.Glossary.LanguageCodePair(
source_language_code="en",
target_language_code="ru"
),
input_config=translate_v3.GlossaryInputConfig(
gcs_source=translate_v3.GcsSource(input_uri=glossary_gcs_uri)
)
)
)
Offline-режим
Для приложений с пользователями в зонах нестабильного интернета — offline-перевод на устройстве.
iOS. MLKit Translation от Google поддерживает скачивание языковых моделей для offline-работы. TranslateLanguage.allLanguages() — список доступных языков. Модель одного языка весит ~30MB.
import MLKitTranslate
let options = TranslatorOptions(
sourceLanguage: .russian,
targetLanguage: .english
)
let translator = Translator.translator(options: options)
// Проверка и загрузка модели
let conditions = ModelDownloadConditions(allowsCellularAccess: true)
translator.downloadModelIfNeeded(with: conditions) { error in
guard error == nil else { return }
translator.translate("Привет, мир") { result, error in
print(result ?? "")
}
}
Android. То же самое через TranslatorOptions и Translator из com.google.mlkit:translate.
Offline-модели работают в режиме секретности — текст пользователя не покидает устройство.
Голосовой ввод и озвучивание перевода
Логичное дополнение переводчика: пользователь говорит → бот переводит → зачитывает перевод вслух.
STT для входного языка: нативные API или Whisper. TTS для языка перевода: AVSpeechSynthesizer на iOS поддерживает AVSpeechSynthesisVoice(language: "fr-FR") — системные голоса для десятков языков. Android TextToSpeech аналогично через setLanguage(Locale("fr", "FR")).
Важно: проверить наличие нужного голоса на устройстве перед озвучкой. AVSpeechSynthesisVoice.speechVoices() — список доступных.
Камера: перевод в реальном времени
Самый впечатляющий сценарий — навести камеру на меню / вывеску / документ и увидеть перевод поверх изображения. Технически: ML Kit Text Recognition (TextRecognizer) → перевод блоков текста → отрисовка поверх camera preview с OCR bounding boxes.
Подводный камень: координаты текста из OCR привязаны к кадру, который изменяется 30 раз в секунду. Стабилизация результатов (сравниваем с предыдущим кадром по IoU bounding boxes) снижает мерцание.
Процесс работы
Выбор Translation API под целевые языки и сценарии использования.
Разработка бэкенда: API-ключи, кэширование переводов, глоссарий.
Мобильный UI: ввод текста, история переводов, кнопки копирования/шеринга.
Опционально: offline-модели, голосовой ввод/вывод, перевод через камеру.
Ориентиры по срокам
Базовый бот-переводчик через cloud API — 2–3 дня. С offline-режимом, голосовым вводом и переводом через камеру — 1,5–2 недели.







