Language Detector API – это клиентский веб-API, предназначенный для определения языка заданной текстовой строки. Поскольку обнаружение выполняется локально в браузере, это повышает конфиденциальность пользователей и снижает потребность в тяжелых внешних библиотеках или дорогостоящих вызовах на стороне сервера.
Основные примеры использования
- Подготовка к переводу. Определение исходного языка перед отправкой текста переводчику.
- Безопасность и фильтрация. Загрузка определенных моделей для таких задач, как обнаружение токсичности.
- Специальные возможности. Пометка контента правильным атрибутом
langдля программ чтения с экрана. - Локализация интерфейса. Настройка интерфейса приложения на основе языка ввода пользователя.
Требования к оборудованию и системе
- ОС: Windows 10/11, macOS 13+, Linux или Chromebook Plus.
- Хранилище: 22 ГБ свободного места (модель удаляется, если свободного места становится меньше 10 ГБ).
- ОЗУ/ЦП: 16 ГБ ОЗУ и не менее 4 ядер ЦП.
- Видеопамять: не менее 4 ГБ, если используется графический процессор.
Руководство по внедрению
1. Управление моделями и активация пользователей
Прежде чем создавать экземпляр детектора или запускать скачивание, проверьте доступность модели.
ОБЯЗАТЕЛЬНО. Создание экземпляра детектора языка или запуск скачивания модели с помощью LanguageDetector.create() ДОЛЖНЫ инициироваться жестом пользователя (например, нажатием кнопки), чтобы предотвратить NotAllowedError, когда модель находится в состоянии downloadable или downloading.
// Check if the model is available or downloadable
const availability = await LanguageDetector.availability();
if (availability !== 'unavailable') {
button.addEventListener('click', async () => {
const detector = await LanguageDetector.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
},
});
});
}
2. Обнаружение бега
API возвращает ранжированный список возможных языков с оценкой достоверности от 0.0 до 1.0.
const someUserText = 'Hallo und herzlich willkommen!';
const results = await detector.detect(someUserText);
for (const result of results) {
// result.detectedLanguage (e.g., 'de')
// result.confidence (e.g., 0.999)
console.log(result.detectedLanguage, result.confidence);
}
Не используйте детектор для очень коротких фраз или отдельных слов, так как точность значительно снижается.
Безопасность и окружающая среда
Окна iframe. Для доступа к API в междоменных окнах iframe требуется явное правило разрешений.
<iframe src="https://cross-origin.example.com/" allow="language-detector" ></iframe>Веб-воркеры. В настоящее время API не доступен в веб-воркерах из-за сложностей с правилами разрешений.
Конфиденциальность. Во время обнаружения данные не отправляются в Google или третьим лицам.
Резервная стратегия
Перед использованием проверьте, доступен ли объект LanguageDetector в глобальной области видимости:
if ('LanguageDetector' in self) {
// The Language Detector API is supported.
} else {
// Execute fallback strategy
}
Если API LanguageDetector не поддерживается или проверка доступности возвращает 'unavailable', необходимо корректно выполнить откат:
- Резервный удаленный API. Перенаправьте запрос на определение языка конечной точке сервера или облачному API, например Vertex AI Gemini API.
- Постепенное сокращение. Отключите элементы и кнопки распознавания языка и сообщите пользователю, что клиентское распознавание в настоящее время не поддерживается в этом браузере. Это позволит предотвратить необработанные исключения и сбои.