Ren’Py多語言支持 link

Ren’Py自身也能實現多語言支持。一個完整的多語言支持版本翻譯了GUI、各種Ren’Py訊息、新工程和啟動器的文本,涵蓋了絕大多數遊戲運行和開發場景。到目前為止,有部分報錯訊息還不支持多語言。

創建一種新的語言支持包含下列步驟:

  1. 打開Ren’Py啟動器。
  2. 在設置頁面,選擇“打開啟動器工程”。
  3. 選擇“生成翻譯文件”。(譯者註:原文為“Generate Translations”。將translation直譯為“翻譯”,容易引發歧義,所以文件中單獨出現時一律使用“多語言支持”,“translation file”則翻譯為“翻譯文件”。)
  4. 輸入需要支持的語言名稱。名稱應該由小寫的ACSII字元和下劃線組成,所以“japannese”、“russian”和“ancient_kilingo”都是合法的語言名稱。
  5. 選擇“生成翻譯文件”。

需要更新某個翻譯文件時也使用相同的流程。需要接入創建的翻譯文件的話,返回到設置頁面,在“語言”標籤下選擇剛才新建的語言。需要注意的是,默認情況下新建的翻譯文件只是複製了一份英語的版本。

翻譯文件 link

翻譯文件存在於 launcher/game/tl/language/目錄。除了script.rpy,所有文件都可以包含使用 字串多語言支持 語法的字串。 有些字串的開頭可能是“## ”。這些是option.rpy和gui.rpy文件中的注釋。

翻譯文件包括:

common.rpy
這個文件包括Ren’Py向玩家展現的介面訊息(字串)。
developer.rpy
這個文件包含的字串面向創作者,而不是玩家。
error.rpy
這個文件包含的字串,會在Ren’Py出現故障時,向開發者或玩家顯示。
gui.rpy
這個文件包含默認GUI中的注釋。
launcher.rpy
這個文件包含的字串是啟動器顯示的一部分。
obsolete.rpy
這個文件裡的字串,當前Ren’Py已經不使用。
options.rpy
這個文件裡的字串,替換默認options.rpy文件中的注釋。
screens.rpy
這個文件包含的字串用於替換screens.rpy文件中的默認GUI和注釋。
script.rpym
創建新工程時,這個文件的內容會一字不差地複製到script.rpy。
style.rpy
默認情況下這個文件不存在,有需要時可以創建。它配置了啟動器樣式(style),及生成遊戲的默認字體。

修改字體 link

Ren’Py自帶的默認字體(DejaVuSans)涵蓋了大多數的西方語言,不過經常會需要用到其他字體。編輯launcher/game/tl/language/style.rpy文件可以配置字體,比如添加字體:

init python:
    translate_font("language", "myfont.ttf")

“language”是需要使用的語言類型(例如,“japannese”),“myfont.ttf”是使用的字體(例如,“MTLc3m.ttf”)。字體檔案應該放在launcher/game/tl/language目錄,這樣就可以被啟動器找到。

修改啟動器樣式 link

啟動器使用的樣式可以配置,方法是在一個translate python語句塊中設置一些變數。具體的變數名如下。變數名比較容易混淆,影響英語版本。

這些變數僅對啟動器有效。

define gui.LIGHT_FONT = “Roboto-Light.ttf” link

啟動器中通用文本使用字體的路徑。

define gui.REGULAR_FONT = “Roboto-Regular.ttf” link

啟動器中重點文本使用的字體路徑。

define gui.REGULAR_BOLD = False link

若為True,重點文本加粗。

define gui.FONT_SCALE = 1.0 link

啟動器中應用於所有文本的縮放係數。

一個 translate python 語句塊常用於設置這些變數。例如,下面的腳本修改了Ren’Py的阿拉伯語字體。:

translate arabic python:
    gui.REGULAR_FONT = "DejaVuSans.ttf"
    gui.LIGHT_FONT = "DejaVuSans.ttf"
    gui.FONT_SCALE = .9
    gui.REGULAR_BOLD = True

函數 link

下列函數用於配置啟動器中的多語言支持。在init python語句塊中調用這些函數。

translate_font(language, font) link

這個函數用於設置 language 的字體。設置後的字體不僅用在啟動器,也用於使用那種語言生成的遊戲中。字體檔案應該放在game/fonts目錄中。

font
一個字串,表示字體檔案名。
translate_define(language, define, value, help=None) link

這個函數在生成遊戲是設置一個define。例如,可以用於修改字體的字號。

language
適用的語言。
define
define的名稱。
value
一個字串,表示define設置的值。(例如,“10”、“False”、“’Font.ttf’”。)
comment
若不是None,會在define之前生成一個注釋。僅當gui.rpy中不存在那個define的情況下,才會生成注釋。不需要在開頭使用“## ”,生成注釋時會自動添加。

舉例,下面的代碼修改了對話文本的字號:

translate_define("martian", "gui.text_size", 12)