Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

偽在地化

前言

建立遊戲時,本地化過程通常在開發完成後開始。這意味著在開發過程中無法使用翻譯來測試專案是否正確國際化。

Godot 提供偽本地化作為測試專案在區域設定變更時的穩健性的一種方法。偽本地化模擬本地化期間可能發生的變化。這樣,任何有關國際化的問題都可以在開發過程的早期就被辨識出來。

也參考

除了這份說明文件,你可能也會想看看 Godot Demo 專案

偽當地語系化的啟用和配置

啟用偽本地化及其相關配置就像在專案設定中切換複選框一樣簡單。在專案設定對話方塊中啟用 進階 切換後,可以在 專案 → 專案設定 → 常規 → 國際化 → 偽本地化 中找到這些設定:

../../_images/pseudolocalization_settings.webp

偽本地化也可以在執行時從腳本 <doc_pseudolocalization_runtime> 切換。

組織專案

Godot 中的偽本地化可以根據專案的具體用例進行設定。以下是可以透過專案設定進行配置的偽本地化屬性:

  • replace_with_accents:將字串中的所有字元替換為其重音變體。 *啟用此設定後, *「敏捷的棕色狐狸跳過了懶狗」*將轉換為*「Ŧh̀é q́üíćḱ ḅŕôŵή f́ôx́ ǰüm̀ṕéd́ ôṽéŕ ŧh̀é ô這可用於發現沒有重音的未翻譯字串,但對於檢查專案使用的字形中是否缺少字形也很有用。

  • double_vowels:將字串中的所有元音加倍。這是在本地化過程中模擬文字擴充的一個很好的近似方法。這可用於檢查會溢出其容器的文字(例如按鈕)。

  • fake_bidi:假雙向文字(模擬從右到左的文字)。這對於模擬從右到左的書寫系統非常有用,以檢查使用從右到左腳本的語言中可能出現的潛在佈局問題。

  • override:用星號(*)取代字串中的所有字元。這對於快速尋找未本地化的文字很有用。

  • “expansion_ratio”:可用來雙元音不足以近似的情況。此設定用下劃線(_)填充字串並按給定的比例擴充它。對於大多數實際情況,「0.3」的膨脹比就足夠了;它會使字串的長度增加 30%。

  • prefixsuffix:這些屬性可用來指定包裝文字的前綴和後綴。

  • “skip_placeholders”:跳過字串格式的佔位符,如“%s”和“%f”。這對於識別需要更多參數才能正確顯示格式化字串的位置很有用。

可以通過程式碼配置這些屬性,也可以在“屬性面板”中對其進行編輯。

運作時配置偽當地語系化

可以使用 TranslationServer 中的 pseudolocalization_enabled<class_TranslationServer_property_pseudolocalization_enabled> 屬性在執行時切換偽本地化。但是,如果需要執行時間配置偽本地化屬性,可以使用 ProjectSettings.set_setting(property, value) <class_ProjectSettings_method_set_setting>` 直接配置,然後呼叫 TranslationServer.reload_pseudolocalization() <class_TranslationServer_method_reloadse_pseudolocalization() <class_TranslationServer_method_reloadse_pseudoloation() <class_TranslationServer_method_recal_pseseconjcalation() <class_TranslationServer_method_reloadse_pseodation 並重新定位偽。以下程式碼片段應開啟「replace_with_accents」和「double_vowels」屬性,然後呼叫「reload_pseudolocalization()」以使變更反映出來:

ProjectSettings.set_setting("internationalization/pseudolocalization/replace_with_accents", true)
ProjectSettings.set_setting("internationalization/pseudolocalization/double_vowels", true)
TranslationServer.reload_pseudolocalization()