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 ,所有文件都可以包含使用 字串多語言支持 語法的字串。 有些字串的開頭可能是“## ”。這些是 options.rpygui.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)