Language Detector API to interfejs API po stronie klienta, który służy do identyfikowania języka danego ciągu tekstowego. Wykrywanie lokalnie w przeglądarce zwiększa prywatność użytkowników i ogranicza potrzebę korzystania z dużych bibliotek zewnętrznych lub kosztownych wywołań po stronie serwera.
Kluczowe przypadki użycia
- Przygotowanie do tłumaczenia: identyfikowanie języka źródłowego przed wysłaniem tekstu do tłumacza.
- Bezpieczeństwo i filtrowanie: wczytywanie konkretnych modeli do zadań takich jak wykrywanie toksyczności.
- Ułatwienia dostępu: oznaczanie treści prawidłowym atrybutem
langna potrzeby czytników ekranu. - Lokalizacja interfejsu: dostosowywanie interfejsów aplikacji na podstawie języka wprowadzania użytkownika.
Wymagania sprzętowe i systemowe
- System operacyjny: Windows 10/11, macOS 13 lub nowszy, Linux lub Chromebook Plus.
- Miejsce na dane: 22 GB wolnego miejsca (model zostanie usunięty, jeśli ilość wolnego miejsca spadnie poniżej 10 GB).
- RAM/CPU: 16 GB pamięci RAM i co najmniej 4 rdzenie procesora.
- VRAM: co najmniej 4 GB w przypadku korzystania z GPU.
Przewodnik po implementacji
1. Zarządzanie modelami i aktywacja użytkowników
Przed próbą utworzenia instancji detektora lub uruchomienia pobierania sprawdź dostępność modelu.
OBOWIĄZKOWE: utworzenie instancji detektora języka lub wywołanie pobierania modelu za pomocą LanguageDetector.create() MUSI być inicjowane przez gest użytkownika (np. kliknięcie przycisku), aby zapobiec wystąpieniu błędu NotAllowedError, gdy model jest w stanie downloadable lub 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. Wykrywanie biegu
Interfejs API zwraca uporządkowaną listę potencjalnych języków ze wskaźnikiem ufności od 0.0 do 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);
}
Unikaj używania detektora w przypadku bardzo krótkich wyrażeń lub pojedynczych słów, ponieważ dokładność znacznie spada.
Bezpieczeństwo i środowisko
Elementy iframe: elementy iframe współdzielenia wymagają wyraźnych zasad uprawnień, aby uzyskać dostęp do interfejsu API.
<iframe src="https://cross-origin.example.com/" allow="language-detector" ></iframe>Web Workers: interfejs API nie jest obecnie dostępny w Web Workers ze względu na złożoność zasad dotyczących uprawnień.
Prywatność: podczas procesu wykrywania żadne dane nie są wysyłane do Google ani do innych firm.
Strategia zastępcza
Przed użyciem sprawdź, czy obiekt LanguageDetector jest dostępny w zakresie globalnym:
if ('LanguageDetector' in self) {
// The Language Detector API is supported.
} else {
// Execute fallback strategy
}
Jeśli interfejs API LanguageDetector nie jest obsługiwany lub testy dostępności zwracają wartość 'unavailable', musisz zastosować odpowiednie rozwiązanie zastępcze:
- Zdalny interfejs API: przekieruj żądanie wykrywania do punktu końcowego serwera lub interfejsu API w chmurze (takiego jak Vertex AI Gemini API), aby zidentyfikować język.
- Łagodna degradacja: wyłącz elementy i przyciski wykrywania języka i poinformuj użytkownika, że wykrywanie po stronie klienta nie jest obecnie obsługiwane w tej przeglądarce, aby zapobiec nieobsługiwanym wyjątkom lub awariom.