語言偵測

網頁功能: 語言偵測工具

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',您必須妥善處理:

  1. 遠端 API 備用方案:將偵測要求重新導向至伺服器端點或雲端 API (例如 Vertex AI Gemini API),以辨識語言。
  2. 優雅降級:停用語言偵測元素/按鈕,並通知使用者這個瀏覽器目前不支援用戶端偵測,避免發生未處理的例外狀況或當機。