Something you must know before using Web AI > Translator API
Introduction
Translator API 是 Google Built-in AI in Chrome 中針對「翻譯」功能特別獨立出來的一隻 API,如果 web developers 想在自家 web page adopt 翻譯功能的話,便可以好好的利用該 API。目前這隻 API 已經在 Chrome Origin Trials 可以找到,預計可以用到 Chrome VER.136,有興趣嚐鮮的朋友千萬不要錯過 OPEN BETA 的機會~
筆者自己也開發了一款 web component — <msc-ai-translator />且申請 Chrome Origin Trials token 來進行測試。另外亦透過 bookmark extension inject 了這個功能到 TW Yahoo New,如下方展示的 video 一樣,輕輕鬆鬆就讓該 web page 具備了翻譯的功能。
簡單幾個包裝便能立馬在服務上裝上翻譯的功,真的是蠻有趣的,筆者在開發的過程中,不免也遇到些眉眉角角的的地方,想趁這個機會跟大家分享,讓大家在使用 Translator API 的時候也能確實避開雷區~
Be careful namespace change
還未標準化的東西就是這樣,隨著愈加成熟越是有機會做些調整。原先 Translator API 都是在 window.translation 下,約莫上週 (2024/11/28)突然 announce 說未來通通都要收攏到 window.ai 下的 translator,連同 Language Detector API 也從 window.translation 搬到 window.ai.languageDetector。不僅僅是這樣,既有支援的 method 亦被 EOL(such as 「canDetect」、「createTranslator」)。
最剛尬的莫過於已經 join origin trials 的服務,因為大多是在既有的 namespace 下,也因此最好的改法就是做到兩者新舊相容~
以上簡單整理一下不同 namespace 下對應的 API call 法,如果一來不管是在新穎的 window.ai 或是 window.translation,Translator API 均能正常運作。
How many language pairs can I use ?
從 Built-in AI Early Preview Program 目前釋出的文件可以看到以下為當前支援的 language pairs。
但實際上支援的遠遠超過上面表格所陳列的資訊(在寫本文的時候已經支援 35 個語系),筆者估計撰文的人疏於更新最新資訊,有興趣的朋友可以在 Chrome 網址列上鍵入「chrome://on-device-translation-internals/」,便能觀看目前所支援的所有語系。
Why doesn’t Chrome download language pack which I need ?
當 web developer opt-in Translator API 時,可能會發現 create 所需要的 language pair ,Chrome 可能不會自動 download。會這樣是因為 Chrome default 會限制 language pack 的總量,可能怕 developers 不小心造成自己或者 user 的困擾(downlaod too many language packs),印象中好像最多是 5 個。Developers 如果想要解除這樣的限制,可以透過「chrome://flags/#translation-api」選擇 Enabled without language pack limit 即可。
Try to delete language pack?
有時候可能因為潔癖或是已經完成測試,所以想要刪除 Chrome 已經 download 下來的 language pack 的話,應該怎麼做呢?
其實很簡單,只要 Chrome 網址列上鍵入「chrome://on-device-translation-internals/」便可以看到當前所支援的所有 language pack 以及對應的狀況。
Web developers 便可以透過頁面所提供的按鈕進行 Install / Ininstall 的動作了。
How to translate to non「en」language?
從 language pairs 支援表來看,我們可以發現,目前都是 en ≤=> N language 的配對。
如果今天我想要把繁體中文翻譯成日文的話,有機會做到嗎?答案是肯定的,我們可以先把繁體中文翻譯成英文,然後再把英文翻譯成日文即可。不過透過 en 語系做中介轉換不免就會略有失真,畢竟語言的理解與翻譯亦是一門藝術。不過在 Translator API 尚未支援前,不免也是一種方法。
Trust no one and wrap with try catch all the time
這些 Web AI 太過新穎且均處不安定狀態,在翻譯過程中出錯也是常有的事情,為了不影響既有的頁面行為,盡可能地使用 try catch 去進行語法包覆最是保險(如上方例子便是使用 try catch 進行包覆)。
Conclusion
以上便是筆者在開發期間自己所遇到點點滴滴問題,希望透過這篇分享,讓有興趣開發 Translator API 的朋友也能夠快樂無礙地進行開發。希望對大家都能有所助益~ #WebAI #TranslatorAPI