網頁功能:
語言偵測工具
Language Detector API 是用戶端網頁 API,用於識別指定文字字串的語言。這項功能會在瀏覽器本機執行偵測,加強保護使用者隱私,並減少對大型外部程式庫或昂貴伺服器端呼叫的需求。
主要用途
- 翻譯準備:先辨識原文語言,再將文字傳送給翻譯人員。
- 安全與篩選:載入特定模型,用於偵測惡意內容等工作。
- 無障礙功能:使用正確的
lang屬性為螢幕閱讀器標示內容。 - 使用者介面本地化:根據使用者輸入的語言調整應用程式介面。
硬體和系統需求
- OS:Windows 10/11、macOS 13 以上版本、Linux 或 Chromebook Plus。
- 儲存空間:22 GB 可用空間 (如果空間低於 10 GB,系統會移除模型)。
- RAM/CPU:16 GB RAM 和 4 個以上的 CPU 核心。
- VRAM:如使用 GPU,則需 4 GB 以上。
導入指南
1. 模型管理和使用者啟用
嘗試例項化偵測工具或觸發下載前,請先檢查模型是否可用。
強制:必須由使用者手勢 (例如點按按鈕) 啟動語言偵測工具,或觸發 LanguageDetector.create() 模型下載,以免模型處於 downloadable 或 downloading 狀態時發生 NotAllowedError。
// 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:跨來源 iframe 必須有明確的權限政策,才能存取 API。
<iframe src="https://cross-origin.example.com/" allow="language-detector" ></iframe>Web Worker:由於權限政策複雜,目前無法在 Web Worker 中使用 API。
隱私權:偵測過程中,不會將任何資料傳送給 Google 或第三方。
備用策略
使用前,請檢查 LanguageDetector 物件是否可在全域範圍內使用:
if ('LanguageDetector' in self) {
// The Language Detector API is supported.
} else {
// Execute fallback strategy
}
如果系統不支援 LanguageDetector API,或可用性檢查傳回 'unavailable',您必須妥善處理:
- 遠端 API 備用方案:將偵測要求重新導向至伺服器端點或雲端 API (例如 Vertex AI Gemini API),以辨識語言。
- 優雅降級:停用語言偵測元素/按鈕,並通知使用者這個瀏覽器目前不支援用戶端偵測,避免發生未處理的例外狀況或當機。