發布日期:2024 年 9 月 24 日
將文字翻譯成其他語言之前,您必須先判斷該文字使用的是哪種語言。先前,翻譯作業需要將文字上傳至雲端服務,在伺服器上執行翻譯,然後下載結果。
Language Detector API 會在裝置上使用推論,讓您改善隱私權說明。雖然可以提供可執行此操作的特定程式庫,但需要額外的資源才能下載。
可用性
- 加入 Language Detector API 來源試用,在 Chrome 130 到 135 之間執行,以便在實際環境中測試 API 與實際使用者。原始試驗功能可讓原始網域上的所有 Chrome 使用者啟用這項功能。瞭解如何開始使用原點測試功能。
- 請按照 Chrome 狀態中的實作方式操作。
- Language Detector 和 Translator API 提案現已開放討論。
- 加入搶先預覽計畫,搶先一睹全新內建 AI API,並參與我們的郵寄清單討論。
使用範例
Language Detector API 主要適用於下列情況:
- 判斷輸入文字的語言,以便進行翻譯。
- 判斷輸入文字的語言,以便為特定語言的任務 (例如惡意言論偵測) 載入正確的模型。
- 判斷輸入文字的語言,以便正確標示,例如在線上社群網站中。
- 決定輸入文字的語言,以便據以調整應用程式的介面。舉例來說,在比利時網站上,您可以只顯示與法文使用者相關的介面。
使用 Language Detector API
Language Detector API 屬於 Translator API 大型系列的一部分。首先,請執行功能偵測功能,查看瀏覽器是否支援語言偵測工具 API。
if ('translation' in self && 'canDetect' in self.translation) {
// The Language Detector API is available.
}
模型下載
語言偵測取決於經過微調的特定語言偵測工作模型。雖然瀏覽器內建這個 API,而網站首次嘗試使用 API 時,就會隨選下載模型。在 Chrome 中,這個模型相較於其他模型來說非常小。事實上,Chrome 瀏覽器功能也使用了這個模型。
如要查看模型是否可供使用,請呼叫非同步 translation.canDetect()
函式。可能會收到三種回應:
'no'
:目前的瀏覽器支援 Language Detector API,但目前無法使用。例如,因為可用磁碟空間不足,無法下載模型。'readily'
:目前的瀏覽器支援 Language Detector API,可立即使用。'after-download'
:目前的瀏覽器支援 Language Detector API,但需要先下載模型。
如要觸發下載作業並將語言偵測工具例項化,請呼叫非同步 translation.createDetector()
函式。如果 canDetect()
的回應為 'after-download'
,建議您監聽下載進度,以便在下載作業耗時時通知使用者。
以下範例說明如何初始化語言偵測器。
const canDetect = await translation.canDetect();
let detector;
if (canDetect === 'no') {
// The language detector isn't usable.
return;
}
if (canDetect === 'readily') {
// The language detector can immediately be used.
detector = await translation.createDetector();
} else {
// The language detector can be used after model download.
detector = await translation.createDetector();
detector.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
await detector.ready;
}
執行語言偵測器
語言偵測器 API 會使用排名模型,判斷特定文字最有可能使用哪種語言。「排名」是一種機器學習技術,目標是為項目清單排序。在本例中,語言偵測器 API 會根據機率由高至低排列語言。
detect()
函式可以傳回第一個結果 (最可能的答案),或是根據信心程度對排序候選項目進行迴迭。系統會以 {detectedLanguage, confidence}
物件清單的形式傳回。confidence
等級以 0.0
(最低可信度) 和 1.0
(最高可信度) 之間的值表示。
const someUserText \= 'Hallo und herzlich willkommen\!';
const results \= await detector.detect(someUserText);
for (const result of results) {
// Show the full list of potential languages with their likelihood, ranked
// from most likely to least likely. In practice, one would pick the top
// language(s) that cross a high enough threshold.
console.log(result.detectedLanguage, result.confidence);
}
// (Output truncated):
// de 0.9993835687637329
// en 0.00038279531872831285
// nl 0.00010798392031574622
// ...
示範
在示範中預覽 Language Detector API。在文字方塊中輸入不同語言的文字。
標準化作業
相關提案獲得足夠支持後,Language Detector API 已移至 W3C Web Incubator Community Group。這個 API 是更大型的 Translation API 提案的一部分。
Chrome 團隊向 W3C 技術架構小組索取意見回饋,並請 Mozilla 和 WebKit 提供標準立場。
提供意見
如果您對 Chrome 的實作方式有任何意見,請回報 Chromium 錯誤。如要針對 Language Detector API 的 API 形狀提供意見,請在 Translation API GitHub 存放區中對現有問題發表意見,或開啟新的問題。