以前在當韓翻的時期,每次拿到遊戲內要翻譯的文檔都會是一個excel檔案,然後有Key的欄位,和對應語系名的欄位,我那時還以為只是開發人員管理方便而已,直到自己也成了開發人員,才知道原來那個是為了要轉成套用在遊戲中的翻譯檔的格式。
其實成為前端後,偶爾會有需求需要更改翻譯文檔,原本都是藉由後端產套用的翻譯文檔,不過好一陣子前,內部更新成用Google Sheets API來產翻譯文檔,比起以前更方便,因為不用再透過後端處理,可以直接在本機跑起來確認。因為也想要自己試著實作一次這個方便的用法,所以就把這個實作方式記錄下來了。
實作重點
事前準備:
在雲端硬碟上,創建一份擺放翻譯內容的google sheet,會需要填入Key值,和翻譯內容,表格內容大致上會呈現如下。
主要的兩個大步驟:
- 於Google Cloud控制台設定服務帳號、產出使用google-sheets的金鑰
- 活用google-spreadsheet,產出用來套用翻譯的json檔案
實作步驟詳細說明
建立服務帳號+產出金鑰
1. 前往Google Cloud(https://cloud.google.com/),進入控制台。
2. 進入控制台,搜尋要使用的「google sheets API」,並且啟用。
啟用後,會進入以下這個畫面。
3. 建立服務帳戶
點入憑證頁面,管理服務帳戶。
點擊建立服務帳戶就可以進入創建服務帳戶的頁面
可以只輸入服務帳戶名稱就好,輸入服務帳戶後,會自動產生服務帳戶ID。最後點擊「完成」,即可以創建好服務帳戶。
這時候會在清單上出現一個服務帳戶,但是沒有金鑰。
4. 建立金鑰
點擊「金鑰」=>「建立新金鑰」=>選擇JSON
點擊「建立」,就會自動下載金鑰JSON檔案。
檔案內容在第二階段會用到,要先保管好。
5. 將服務帳號加到翻譯google sheet檔案的共用清單。
從這裡可以看到這個服務帳戶的電子信箱。
從這裡把建立服務帳戶後產生的電子信箱加到可以共用這份google sheet的使用者名單裡面。
利用google-spreadsheet套件產出i18n套用翻譯用的JSON文檔
1. 專案裡安裝google-spreadsheet套件
npm install google-spreadsheet
或是
yarn add google-spreadsheet
2. 將前面建立金鑰所產出的JSON檔案放到專案裡
3. 寫產生翻譯JSON檔案的js檔
這裡就會是比較重要的部分了!也就使用到google-spreadsheet套件的部分。
(1) 使用google-spreadsheet的起手式:
- 引用GoogleSpreadsheet
- 找出要使用的documentID,設定成變數(不設定成變數當然也可以,只是設定成變數,如果需要替換比較好找到他在哪)
document ID可以從google sheet的網址上找到,google sheet的網址組成會是以下這樣
docs.google.com/spreadsheets/d/[這邊這段就是上面提到的document id]/edit#gid=0
(2) 寫一個取得google sheet資料的function,參數需要帶入document id、金鑰、要來產出個單獨語系檔的語言array
(3) function 接下來加上處理取得google sheet文件內容的邏輯
(4) require fs和加上產出各語系JSON檔案的部分
因為要做產出檔案的動作,所以最上方還需要把node.js的File System require進來
function最底部加上產出JSON檔案的內容
最後完整的程式碼會變成以下這樣,當執行這個js檔案時,就會產出我們要拿來使用在i18n上的翻譯文檔了。
為了方便使用,可以在專案中的package.json設定使用時的指令,例如以下這樣。
有了這個之後,就可以輕鬆,且快速地產出i18n要使用的翻譯文檔。
來看看搭配i18n完成的最後成品 : )
其實google sheets API還可以有很多應用,只是目前有用到的應用只有產翻譯文檔,不過經過這次的實作練習後,以後如果有適合的情境,應該也能第一時間想到還有它可以用。
好啦!這次的內容就到這裡結束啦!
打完收工~
