Реалізація бота-перекладача у мобільних додатках
Бот-перекладач — це не просто виклик Translation API. Цікаві сценарії починаються там, де потрібно зберігати контекст діалогу, перемикатися між мовами на льоту та працювати офлайн. Саме ці деталі розділяють «перекладач, який працює» та «перекладач, який працює добре».
Вибір Translation API
DeepL API. Найкраща якість перекладу для європейських мов. Безплатний рівень — 500K символів/місяць. Підтримує офіційний/неофіційний тон (formality параметр) — важливо для ділового контенту. Не підтримує російську → інші мови на рівні Google/Yandex.
Google Cloud Translation API. 100+ мов, висока якість для російської. v3 підтримує glossary — словник термінів, які не можна перекладати або потрібно перекладати суворо визначеним способом. Для медицини, юридичних текстів, брендових назв — обов'язкова функція.
Yandex Translate API. Найкращі результати для російської ↔ європейські мови. Детектування мови вбудоване. Хороший вибір для додатків з російськомовною аудиторією.
LLM (GPT-4o / Claude). Контекстуальний переклад з урахуванням тону та стилю. Виграє на спеціалізованих текстах, ідіомах, гуморі. Дорожче та повільніше спеціалізованих API для простих перекладів.
Ключові технічні завдання
Визначення мови. Користувач вводить текст — бот повинен зрозуміти, з якої мови перекладати. Або явний вибір через picker, або автодетект. 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)
)
)
)
Офлайн-режим
Для додатків з користувачами в зонах нестійкого інтернету — офлайн-переклад на пристрої.
iOS. MLKit Translation від Google підтримує завантаження мовних моделей для офлайн-роботи. 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.
Офлайн-моделі працюють у режимі приватності — текст користувача не покидає пристрій.
Голосовий ввід та озвучування перекладу
Логічне доповнення перекладача: користувач говорить → бот перекладає → зчитує переклад вголос.
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: ввід тексту, історія перекладів, кнопки копіювання/шеринга.
Опціонально: офлайн-моделі, голосовий ввід/вивід, переклад через камеру.
Часові орієнтири
Базовий бот-перекладач через cloud API — 2–3 дні. З офлайн-режимом, голосовим введенням та перекладом через камеру — 1,5–2 тижні.







