Google Translate Service:自動翻譯外文

2023/10/29閱讀時間約 7 分鐘

Google Apps Script 可以用來自動化,還可以跟 G Suite、Google Workspace 中的軟體串連、延伸應用範圍,比如說你可以用它來跟 Google 試算表、Google 文件、Gmail 串連;那麼,如果你需要翻譯外語,就可以用 Apps Script 下的 Google Translate Service(Google 翻譯服務)來達成,幫你把文字自動翻譯好!

這次會來介紹怎麼在 Apps Script 使用 Google Translate Service 翻譯服務,也會附上語言代碼表給你參考應用。


Google Translate Service 怎麼用?

總之先來看看語法是怎麼寫的吧!


語法結構

LanguageApp.translate(text, sourceLanguage, targetLanguage, [advancedArgs])
  • text:要翻譯的語句。
  • sourceLanguage:指定 text 的語言是什麼。如果留空字串("")的話,指令會自動偵測 text 的語言。
  • targetLanguage:指定要翻譯成什麼語言。
  • [advancedArgs]:選填,進階參數。如果你的 text 是 html 的形式,可以在這邊指定 {contentType: "html"}
LanguageApp.translate(text, sourceLanguage, targetLanguage, {contentType: "html"})


那麼上面的指令輸出結果就是翻譯好的文字了。

這邊的 sourceLanguagetargetLanguage 要以「語言代碼」的方式呈現,比如說英文是「en」、繁體中文是「zh-TW」、日文是「ja」。在文章的後半段會附上語言代碼的列表給你,歡迎取用!




舉例:翻譯試算表上的文字、翻譯 HTML 文件

接下來做兩個簡單的範例給大家看看。


我有個叫做「翻譯比較」的工作表,在 A2 有我想要翻譯的日文文字,並且想把它翻譯成中文,把結果顯示在 B2 上:

raw-image

那程式碼就會像這樣子:

function translateText() {

const ss = SpreadsheetApp.getActiveSpreadsheet();
const ws = ss.getSheetByName('翻譯比較');

const textToTranslate = ws.getRange('A2').getValue();
const sourceLangauge = 'ja';
const targetLanguage = 'zh-TW';

const translatedText = LanguageApp.translate(textToTranslate, sourceLangauge, targetLanguage);
ws.getRange('B2').setValue(translatedText);

}


結果呈現:

raw-image


再舉一個翻譯 html 文件的狀況!

如果你的 text 是從某個網頁來的,那你的語法需要加入進階參數({contentType: "html"}),翻譯出來的結果就會是一個 html 文件。

這邊我試著利用翻譯服務,把阿部寬的個人檔案網頁翻成中文:

function translateHTMLText() {

const getContent = UrlFetchApp.fetch('http://abehiroshi.la.coocan.jp/prof/prof.htm', {contentType: 'html'});
const textToTranslate = getContent.getContentText("Shift_JIS");
const sourceLangauge = 'ja';
const targetLanguage = 'zh-TW';
const advancedArguments = {contentType: "html"};

const translatedText = LanguageApp.translate(textToTranslate, sourceLangauge, targetLanguage, advancedArguments);
Logger.log(translatedText)

}

執行結果就會像這樣:

raw-image

把這串翻譯的結果丟到 w3school 的 HTML 編輯器,效果就像這樣:

雖然阿部寬被強制改名了(笑)

雖然阿部寬被強制改名了(笑)




限額(Quota)

不過這個功能當然不是讓你用到飽的!有些 Apps Script 提供的服務有每日限額和功能的限制。超出限制的話,你的腳本就會跑不動、只能隔天再來囉。

如果你在用的是:

  • 個人版帳號,一天可呼叫翻譯服務 5000 次
  • 企業版、學校版帳號,一天可呼叫翻譯服務 20000 次

可惜的是,如果你想知道今天的限額還多少,目前 LanguageApp 還不支援這樣的功能,所以有自動批次翻譯的需求的話,精打細算一天會用到多少翻譯服務是很必要的,要小心小心!




語言代碼

這邊把一些常見的語言代碼放在這,給你參考:

  • 中文(繁體):zh-TW
  • 中文(簡體):zh-CNzh 皆可
  • 英文:en
  • 法文:fr
  • 德文:de
  • 西班牙文:es
  • 葡萄牙文:pt
  • 日文:ja
  • 韓文:ko
  • 越南文:vi
  • 印尼文:id
  • 菲律賓文:fil
  • 泰文:th
  • 阿拉伯文:ar
  • 俄文:ru
  • 土耳其文:tr
  • 烏克蘭文:uk
  • 義大利文:it

我也把語言代碼歸納成一個試算表,有常見的語言、也有目前官方支援的所有語言的代碼,歡迎拿去用:

raw-image


跟不同翻譯服務比較

最後,我想以費用、限額、是否能自動化、翻譯品質優劣這幾個角度,來比較 Apps Script 的翻譯服務、GOOGLETRANSLATE 函式、人工智慧翻譯跟人類譯者的表現,彙整成了這張表:

raw-image

整體來說,比起其他翻譯服務,我認為其實 Apps Script 的翻譯服務算是還 OK 的折衷方案,因為它既能面對簡單的翻譯場合、也支援很多語種、也能配合自動化腳本的撰寫,而且只要注意限額的話,基本上是免費的!

順帶一提,比較翻譯品質的時候,我拿了日本文學經典名作,夏目漱石的「我是貓」(吾輩は猫である)的前幾段,來比較看看 Apps Script 翻譯服務跟不同翻譯服務的成效。

如果有興趣看原文和不同的譯文,可以到我準備的文件看看:

raw-image

如果你覺得你不想寫程式,用 GOOGLETRANSLATE 函式就夠了,也歡迎你回到之前的文章,複習一下怎麼用它來翻譯:用 GOOGLETRANSLATE 批次翻譯




如果你喜歡這次的文章,歡迎你透過這些方法支持我:

  • 按下愛心、按下儲存
  • 留言告訴我你的想法
  • 加入喜特先生的官方沙龍,即時看到我發布的教學
  • 付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
  • 追蹤喜特先生的 Facebook
  • 這邊小額贊助我的創作!

想要看更多文章的話,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!

我是喜特先生,Mr. Sheet,我們下個教學見!



4.4K會員
137內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言0
查看全部
發表第一個留言支持創作者!