編輯器與說明文件本地化
Godot 致力於讓每個人都能輕鬆進行遊戲開發,包含不懂或不習慣使用英語的人。因此,我們努力讓最重要的資源能以多種語言提供,感謝社群貢獻翻譯。
這些資源包含:
我們使用 GNU gettext 檔案格式(PO 檔),以及開源的 Weblate 網頁本地化平台來管理翻譯。Weblate 能協助多位貢獻者協作,完成各項元件的翻譯並保持更新。請點擊上方粗體連結以在 Weblate 存取各資源。
本頁將簡要介紹在 Weblate 上的翻譯工作流程,並針對某些資源說明如關鍵字處理或圖片本地化等細節。
小訣竅
翻譯所有 Godot 官方內容是一項龐大工程,因此建議依照上方順序優先處理:先翻譯編輯器介面、再來是類別參考文件、最後才是線上說明文件。
使用 Weblate 進行翻譯
雖然所有翻譯最終都會納入 Godot Engine 及其說明文件的 Git 儲存庫,但所有翻譯更新都需透過 Weblate 處理,因此不接受直接對 Git 儲存庫發送 Pull Request。翻譯由維護者手動在 Weblate 與 Godot 儲存庫間同步。
因此,若要貢獻 Godot 的翻譯,應先 在 Weblate 上註冊。
登入後,請前往你想貢獻的 Godot 資源(本頁以 編輯器翻譯 為例),即可看到所有語言列表:
也參考
如需了解詳情,歡迎參閱 Weblate 的 翻譯工作流程 說明文件。
新增語言
若你的語言已在列表中,點擊名稱即可進入該語言總覽,並可略過本段。
若語言未在列表中,請捲動到底部,點擊「Start new translation」按鈕,並選擇你要翻譯的語言:
重要
如果你的語言在多個國家間僅有些微區域差異,請優先新增通用語言變體(例如法文用 fr),而非區域變體(如 fr_FR、fr_CA、fr_DZ 等)。
Godot 內容龐大,僅當區域語言差異顯著時才需針對地區變體重複翻譯。若只翻譯地區變體,則僅該地區的使用者(或系統語言設定為該地區)會自動套用此翻譯。
當區域語言差異大到需要分開翻譯時,建議先完成通用變體的翻譯,再複製到各區域變體進行調整。這對西班牙語(先做 es,再必要時複製到 es_AR、es_ES、es_MX 等)或葡萄牙語(pt_BR 與 pt_PT)皆適用。
翻譯介面
選擇語言後,會看到翻譯狀態,包括尚有多少字串需翻譯或審閱。可點擊各項目瀏覽對應列表,也能點擊「Translate」按鈕開始處理待翻譯字串。
選擇清單並點擊「Translate」後,會進入主要翻譯介面,所有翻譯作業皆在此進行:
在該頁面,你會看到:
工具列,可切換目前列表的字串、轉至其他預設列表或自訂搜尋等。另有「禪模式(Zen)」提供簡化介面。
正在編輯的字串會顯示於「Translation」面板,預設會有英文原文及你語言的編輯欄。若熟悉其他語言,也可於使用者設定中加入以提供翻譯脈絡。編輯完成後請點擊「Save」儲存並自動跳到下一筆,或點「Skip」略過。「Needs editing」勾選代表原文有更新,需重新審閱(這類字串在 PO 中稱為「fuzzy」)。未修正前,這些翻譯不會被採用。
下方面板提供多種工具協助翻譯,例如鄰近字串脈絡(通常來自同一工具或文件頁,可能用到相似術語)、其他譯者留言、機器翻譯,以及該字串的各語言翻譯列表。
右上角的「Glossary」會顯示已新增且出現在目前字串中的術語。例如,你和其他譯者決定「node」在 Godot 應譯為特定詞彙時,可加入術語表,確保大家統一用詞。
右下方面板會顯示原文相關資訊,最重要的是「source string location」,可連結到 GitHub 上原始字串。你可能需要在該頁中搜尋字串,以便取得上下文。
找出原始內容
PO 檔為原始字串(msgid)及其翻譯(msgstr)的有序列表,Weblate 會依序顯示這些字串。因此,了解 PO 檔內容組織方式,有助於你在翻譯時找到原始內容並作為參考。
重要
翻譯時,務必參考原始上下文,許多詞彙根據情境會有不同譯法。錯誤翻譯有時比原文維持英文更難懂。理解上下文能讓翻譯更正確,也讓翻譯工作更輕鬆,能即時檢查語意是否通順。
編輯器介面的翻譯樣板是以**字母順序**剖析所有 C++ 原始碼產生,因此同一檔案的字串會被分組在一起。若「source string location」顯示為
editor/code_editor.cpp,則該字串(及其周邊字串)均來自此檔案,屬於 Godot 的程式碼編輯器(如 GDScript、著色器)相關內容。線上說明文件的翻譯樣板由原始 RST 檔案生成,其順序和**目錄**相同。例如,第一批字串來自說明文件首頁。因此建議先找出你要翻譯頁面中獨特字串,然後參考該頁線上英文版,逐一翻譯相同 source string location 下的所有字串。例如 節點與場景 對應的 source string location 為
getting_started/step_by_step/nodes_and_scenes.rst。類別參考文件的翻譯樣板由原始 XML 檔以**字母順序**生成,順序也與線上目錄一致。你可先找出某類別簡介的原始字串,作為首個翻譯標的,該類別的其他說明會緊接於其後。例如 Node2D 的內容對應的 source string location 為
doc/classes/Node2D.xml。
要快速找到特定頁面或類別,可以利用 Weblate 進階搜尋中的「Location strings」查詢(也可用 location: 標記搜尋,例如 location:nodes_and_scenes.rst):
備註
若同一原文在多個位置出現,這些位置會合併成一筆字串。例如上述 location:nodes_and_scenes.rst 查詢,會先找到「Introduction」這一原文,而該詞也出現在多個頁面,包括 nodes_and_scenes.rst 之前的檔案。按「Next」可跳到「Scene and nodes」標題。因此,某段或標題在 PO 檔的位置,可能與線上文件顯示的順序不同。
遵守標記語法規則
各翻譯資源來源格式不同,了解各自標記語言有助於避免翻譯時產生語法錯誤。
編輯器介面(C++)
編輯器翻譯來自 C++ 字串,可能會用到:
C 語言格式字串,如
%s``(字串)、``%d``(數字)。這些標記會在執行時由內容取代,翻譯時必須保留並放置於合適位置,確保取代後語意正確。如無法判斷取代內容,請參考 source string location。範例(``%s會被檔名或路徑取代):# PO file: "There is no '%s' file." # Weblate: There is no '%s' file.
C 語言逸出字元,如
\n``(換行)、t``(定位符)。Weblate 介面中\n會顯示為↵``(換行),t`` 則為↹。Tab 字元不常用,但應與原文一致使用換行(不符時 Weblate 會警告)。換行有時用於垂直間距,或手動換行過長內容,尤其是編輯器翻譯。範例:# PO file: "Scene '%s' is currently being edited.\n" "Changes will only take effect when reloaded." # Weblate: Scene '%s' is currently being edited.↵ Changes will only take effect when reloaded.
備註
只需注意字元的邏輯順序,在從右至左的語言中,格式字串可能會顯示為 s%。
線上說明文件(RST)
說明文件翻譯來自 reStructuredText(RST)檔案,RST 使用自身標記語法來格式化文字、建立內外部連結等。範例如下:
# "development" is styled bold.
# "Have a look here" is a link pointing to https://docs.godotengine.org/en/latest.
# You should translate "Have a look here", but not the URL, unless there is
# a matching URL for the same content in your language.
# Note: The `, <, >, and _ characters all have a meaning in the hyperlink
# syntax and should be preserved.
Looking for the documentation of the current **development** branch?
`Have a look here <https://docs.godotengine.org/en/latest>`_.
# "|supported|" is an inline reference to an image and should stay unchanged.
# "master" uses the markup for inline code, and will be styled as such.
# Note: Inline code in RST uses 2 backticks on each side, unlike Markdown.
# Single backticks are used for hyperlinks.
|supported| Backwards-compatible new features (backported from the ``master``
branch) as well as bug, security, and platform support fixes.
# The :ref: Sphinx "role" is used for internal references to other pages of
# the documentation.
# It can be used with only the reference name of a page (which should not be
# changed), in which case the title of that page will be displayed:
See :ref:`doc_ways_to_contribute`.
# Or it can be used with an optional custom title, which should thus be translated:
See :ref:`how to contribute <doc_ways_to_contribute>`.
# You may encounter other Sphinx roles, such as :kbd: used for shortcut keys.
# You can translate the content between backticks to match the usual key names,
# if it's different from the English one.
Save the scene. Click Scene -> Save, or press :kbd:`Ctrl + S` on Windows/Linux
or :kbd:`Cmd + S` on macOS.
也參考
建議參閱 Sphinx 的 reStructured Text primer,快速了解原文中可能出現的標記語言。實務上常見行內標記(粗體、斜體、行內程式碼)及內外部超連結標記。
類別參考文件(BBCode)
類別參考文件記錄於 Godot 主儲存庫的 XML 檔,並採 BBCode 樣式標記語法進行格式化與內部參照。
部分標籤來自原生 BBCode(如 [b]粗體[/b]、[i]斜體[/i]),其餘則為 Godot 專用,如行內程式碼([code]true[/code])、連結至其他類別([Node2D])、連結至類別屬性([member Node2D.position]),或多行程式碼區塊。範例:
Returns a color according to the standardized [code]name[/code] with [code]alpha[/code] ranging from 0 to 1.
[codeblock]
red = ColorN("red", 1)
[/codeblock]
Supported color names are the same as the constants defined in [Color].
上述範例中的 [code]name[/code]、[code]alpha[/code]、[Color] 不應翻譯,因為分別對應到參數名稱及 Godot API 的類別。同理,[codeblock] 內容也不需翻譯,因為 ColorN 為 API 函式,而 "red" 是支援的顏色名稱。頂多可翻譯結果變數名稱(如 red = ...)。
另外注意,XML 中每行即為一段,若原文未斷行,翻譯時也不應新增換行。
也參考
請參閱我們為類別參考文件撰寫者準備的說明,取得 BBCode 樣式標記標籤清單,這些標籤會廣泛用於類別參考文件。
離線翻譯與測試
我們建議透過 Weblate 介面進行翻譯,你也可將 PO 檔下載到本機,以慣用的 PO 編輯軟體(如 Poedit 或 Lokalize)編輯。
若要下載 PO 檔,請前往該語言翻譯總覽頁,並於「Files」選單選擇第一項:
編輯完成後,請於同一選單選擇「Upload translation」並選擇你的檔案,上傳時請選「Add as translation」。
備註
若下載與上傳之間間隔過久,可能會覆蓋其他貢獻者的翻譯。因此建議盡量使用線上介面,以確保作業內容為最新版本。
若要在本機測試翻譯結果(特別是編輯器翻譯),可使用已下載的 PO 檔,並 從原始碼編譯 Godot。
將編輯器翻譯用 PO 檔重新命名為 <lang>.po``(例如世界語為 ``eo.po),並放置於 editor/translations/ 資料夾(GitHub)。
想測試類別參考文件翻譯也可用相同方式,將 PO 檔重新命名後放到 doc/translations/ 資料夾(GitHub)。
說明文件圖片本地化
線上說明文件含有許多圖片,可能是 Godot 編輯器截圖、自製圖表或其他視覺內容。有些圖含有內文,因此你可能需要針對你的語言進行圖片本地化。
圖片翻譯不透過 Weblate 處理,而是直接在 godot-docs-l10n Git 儲存庫上操作,該儲存庫同步自 Weblate 的說明文件翻譯。
備註
這個流程並不直覺,且需具備 Git 基本知識。我們計畫日後開發更直觀的網頁工具,讓圖片本地化更簡便。
要翻譯圖片,請先在原始英文說明文件頁面找到該圖。例如進入 Godot 介面初探,點右上角「Edit on GitHub」:
在 GitHub 上點擊你要翻譯的圖片,若需要可點「Download」下載後用圖片編輯工具處理。請記下圖片完整路徑,後續會用到(如 getting_started/step_by_step/img/project_manager_first_open.png)。
製作本地化圖片時,可直接編輯英文原圖,若為編輯器截圖也可用你的語言重新擷取。有些圖檔提供 SVG 原始檔,可檢查 img/ 資料夾是否有提供。
本地化圖片的檔名請與原圖相同,但在副檔名之前加上語言代碼。例如 project_manager_first_open.png 的法文版應為 project_manager_first_open.fr.png。
最後,請在 godot-docs-l10n 的 images 子資料夾內照原圖建立相同路徑(GitHub),將翻譯後圖片放入。依本例,最終路徑應為 images/getting_started/step_by_step/img/project_manager_first_open.fr.png。
如需翻譯更多圖片,請重複以上步驟,並 建立 Pull Request。