Автоматическое определение языка: как приложение выбирает язык источника

Last updated: 2026-09-03

Автоматическое определение языка: как приложение выбирает язык источника

Автоопределение — это первый вариант в селекторе языка источника. Его выбор не означает, что приложение не имеет мнения об источнике — это означает, что приложение будет выбирать конкретный язык источника ML Kit для каждого перевода, используя либо подсказки языка по блокам OCR (для фотографий), либо эвристику набора символов на уровне Dart (для текста).

## Почему для каждого перевода

Переводчик ML Kit на устройстве требует, чтобы конкретный язык источника был загружен до запуска перевода. Автоопределение не может означать «переводить с любого языка»; оно должно разрешаться в один из 19 поддерживаемых языков для каждого перевода. Приложение выполняет это разрешение автоматически.

## Как это работает для фотографий

Для захватов камеры механизм OCR выдаёт подсказку языка для каждого распознанного блока. Подсказки агрегируются по странице; язык большинства становится языком источника ML Kit для этого перевода.

Одноязычные страницы разрешаются чисто: страница с корейскими подписями разрешается в корейский, страница с французским текстом разрешается в французский. Страницы со смешанными шрифтами возвращаются к значению по умолчанию, если ни один язык не доминирует.

Поблочный перевод использует эти подсказки более гранулярно. Страница с английскими заголовками и японскими подписями может быть переведена с соответствующим источником для каждого блока, даже когда язык большинства неясен.

## Как это работает для текста

Для текстовых переводов приложение запускает эвристику на уровне Dart, которая подсчитывает символы по классу шрифта:

- Символы Хань → Упрощённый китайский
- Кана → Японский
- Хангыль → Корейский
- Латиница → Английский
- Кириллица → Русский
- Арабский → Арабский

Смешанный ввод следует за классом символов большинства. Пустой ввод или ввод только с пробелами по умолчанию становится английским.

Эвристика быстрая (один линейный проход по вводу) и запускается перед вызовом ML Kit. Выбранный язык источника затем используется для запроса перевода.

## Когда автоопределение не срабатывает

- **Латиница без диакритики.** Фрагмент из 10 чисто латинских символов может быть английским, французским, немецким, итальянским, португальским, испанским, голландским, польским, чешским или несколькими другими. Эвристика выбирает английский по умолчанию; если источник не английский, качество перевода может пострадать. Закрепите язык источника вручную для коротких латинских фрагментов.
- **Кириллица без конкретики.** Кириллица может быть русской, украинской или другой славянской письменностью. Приложение выбирает русский.
- **Неоднозначность письменности Хань.** Упрощённый и традиционный китайский разделяют большинство своих символов. Короткий фрагмент символов Хань не может быть разрешён в один без более длинного контекста. Приложение выбирает упрощённый китайский.

Для этих случаев закрепите язык источника вручную из селектора.

## Автоопределение никогда не молчит

Страница всегда имеет конкретный язык источника ML Kit при запуске перевода. Если эвристика возвращает неправильное значение по умолчанию, перевод может быть неправильным; если она возвращает правильный язык, перевод работает. Нет режима, в котором приложение «не может выбрать язык» — оно проваливается на значение по умолчанию и переводит.

## Практический совет

Для длинных одноязычных документов автоопределение работает. Для коротких фрагментов или страниц со смешанными шрифтами закрепите язык источника вручную из селектора. Селектор запоминает ваши недавние языки вверху, поэтому второе использование языка — это одно нажатие.