ETH官方钱包

前往
大廳
主題

【Godot】圖鑑頁面切換-Part3自動化翻譯

小短腿 | 2024-05-06 14:21:46 | 巴幣 1100 | 人氣 153

本次教學筆記所使用的Godot版本為v4.2.1,程式語言為GDScript
============================================

【資料庫製作】Excel
        也是有其他更專業的資料管理工具,但以小規模遊戲來說,Excel就足夠應付大多數的狀況了。首先根據個人需求將資料分類,並給予唯一能代表該串資料的KEY值(通常使用全大寫英文,可加入數字)。語言代碼須符合language codes,像這裡的en是英文、zh則是代表中文。直接編輯純文字檔案時,記得要以雙引號來包住有逗號、換行或雙引號的訊息,避免換行字元讀取錯誤。

        匯出成CSV格式前,僅能有一個活頁,且橫向的欄不能有全空白僅方便閱讀用的欄位(否則在匯入時會報錯)。Excel 2016以後的版本可以在另存新檔時選擇CSV UTF-8(逗號分隔)而比較舊版的Excel可以選擇將檔案上傳雲端硬碟,再匯出成CSV(檔案 > 下載 > 逗號分隔值檔案)

【匯入Godot
        Godot 預設會將 CSV 檔案當作翻譯來處理,同時切分成數個壓縮的翻譯資源。透過專案 > 專案設定 > 當地語系化,來設定自動翻譯庫。

【代碼編寫-自動化翻譯
根據情況切換語言時,使用TranslationSever的get_locale()和set_locale(),語言代碼一樣需符合language codes
使用Object.tr()函式會自動瀏覽剛才所設定的翻譯庫,找到對應的鍵值後根據當前語系輸出文字。
根據翻譯的內容,要顯示的文字長度會有不同,像代表成就的Achievement會超出我希望它呈現的範圍,因此用add_theme_font_size_override()來手動調整字體大小。其他根據個人需求也可以嘗試RichTextLabel節點的Fit Content,或是可參考這篇問答裡提供的方法:連結

補充:(2024/06/17)
若是不需要動態更動Label內容,可以直接在屬性面板輸入KEY值,等遊戲運行時也會自動替換翻譯喔!

【實際運行
        最後的成果大概就像這樣,後續要替遊戲添加更多種語言時,也不會太麻煩了~

-------參考資料-------
匯入翻譯 --- Godot Engine
將遊戲國際化 --- Godot Engine
Godot: How to set in game language? --- user289661(2022/05/12)
============================================

        原本要先弄信號切換頁面的,只是想了想感覺先把資料庫能提供的文字、圖片路徑資料替換完可能會比較好。不然等到代碼行數變多的時候,要確定所有資料都有替換到就會比較辛苦了www。至於純方便企劃人員使用Excel來調整的純數據資料,比方說:ATK30、HP100之類的,也可以用類似的方法來實作,但會更推薦使用SQLite數據庫(下一篇介紹)。另外想哀號的是......雖然這次的篇幅不長,但真的花了一些時間才找到我需要的語法。而且最開始對資料庫的理解也完全搞錯方向,因此重新編寫了好幾次

創作回應

更多創作