Ren’Py多語言支持 link
Ren’Py自身也能實現多語言支持。一個完整的多語言支持版本翻譯了GUI、各種Ren’Py資訊、新工程和啟動器的文本,涵蓋了絕大多數遊戲運行和開發場景。到目前為止,有部分報錯資訊還不支持多語言。
創建一種新的語言支持包含下列步驟:
打開Ren’Py啟動器。
在設置頁面,選擇“打開啟動器工程”。
選擇“生成翻譯文件”。(譯者註:原文為“Generate Translations”。將translation直譯為“翻譯”,容易引發歧義,所以文件中單獨出現時一律使用“多語言支持”,“translation file”則翻譯為“翻譯文件”。)
輸入需要支持的語言名稱。名稱應該由小寫的ACSII字元和下劃線組成,所以“japannese”、“russian”和“ancient_kilingo”都是合法的語言名稱。
選擇“生成翻譯文件”。
需要更新某個翻譯文件時也使用相同的流程。需要接入創建的翻譯文件的話,返回到設置頁面,在“語言”標籤下選擇剛才新建的語言。需要注意的是,默認情況下新建的翻譯文件只是複製了一份英語的版本。
翻譯文件 link
翻譯文件存在於 launcher/game/tl/language/
目錄。除了 script.rpy
,所有文件都可以包含使用 字串多語言支持
語法的字串。 有些字串的開頭可能是“## ”。這些是 options.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
還有一種非直接替換的多語言實現方式。 “{#language name and font}” 在翻譯文件中會被替換為對應語言的名稱, 如果使用的是非ASCII碼字元,可以選擇轉為啟動器字體。 例如:
translate french strings:
old "{#language name and font}"
new "{font=fonts/Roboto-Light.ttf}Français{/font}"
如果啟動器語言與翻譯文件中指定的語言不一致時,可以使用這種方式顯示語言名稱。
翻譯文件中,其他以“{#in language font}”開頭的內容都需要以類似方式轉換。 例如:
translate french strings:
old "{#in language font}Start using Ren'Py in [lang_name]"
new "{font=fonts/Roboto-Light.ttf}Commencez à utiliser Ren'Py en [lang_name]{/font}"
修改字體 link
Ren’Py自帶的默認字體(DejaVuSans)涵蓋了大多數的西方語言,不過經常會需要用到其他字體。編輯 launcher/game/tl/language/style.rpy
文件可以配置字體,比如添加字體:
init python:
translate_font("language", "myfont.ttf")
“language”是需要使用的語言類型(例如,“japanese”),“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)