目錄表
DokuWiki 之在地化
DokuWiki 的使用者介面能讓大家設定選用的語言。只要設定好語言組態即可。
使用者介面可使用的語言列於 DokuWiki Localization Hub 。
若要把 DokuWiki 翻譯為你的語言,請造訪 http://translate.dokuwiki.org/ ,選擇你的語言,透過網路介面修改翻譯,送出後就會建立一個新的語言包。
翻譯後請把語言包寄給 andi [at] splitbrain [dot] org,它就會成為新釋出的版本。
翻譯者應加入 I18N Mailing List 以獲得新的訊息,如新增的字串或需要翻譯的東西。
附加元件之在地化
大多數的附加元件只提供英語,歡迎你為這些元件在地化。即使只翻譯幾個句子,也是好事。單單幾個字,也能改善該附加元件。
以下說明,解釋了如何建立翻譯,並儲存需要的檔案。
- 複製
lib/plugins/<附加元件名稱>/lang/en/
至lib/plugins/<附加元件名稱>/lang/<ISO語言代碼>/
並把內容翻譯成你想要的語言。- 你可以在 https://translate.dokuwiki.org/ 找到大多數語言的ISO語言代碼
- 要提供你的翻譯檔案,你可以這麼做(根據適切性排序)
- 使用 Github Pull Request 將它推送(Push)到程式碼倉庫(未必每個附加元件都允許)
- 將你的翻譯內容寫在本站適當的附加元件頁面裡(建立一個名為
Localization
的段落,如果沒有的話) - 寫信給附加元件的作者(看他有沒有回應。如果沒有,請嘗試其他提交翻譯內容的方法)
- 寫信至 i18n Mailinglist
對於其他問題或尋求一般性協助,你可以寫信到 I18N-Mailinglist 或在 IRC-Channel 提問。
修改已安裝 DokuWiki 的翻譯內容
DokuWiki 之中有許多翻譯文字,例如註冊、密碼遺忘的 email 或編輯表格上方的文字。你可以修改它們,複製 inc/lang/<ISO語言代碼>/<名稱>.txt
到 conf/lang/<ISO語言代碼>/<名稱>.txt
,然後修改複製的檔案。如此一來你的修改不會被新版覆蓋。你也可以對附加元件做同樣的事(如 ACL 編輯器權限管理的協助文字),複製 lib/plugins/<附加元件>/lang/<ISO語言代碼>/<名稱>.txt
到 conf/plugin_lang/<plugin>/<ISO語言代碼>/<name>.txt
,然後修改它們即可。
DokuWiki 說明文件之在地化
我們很鼓勵大家翻譯 DokuWiki 的說明文件。翻譯的頁面應使用與原文相對應的頁面名稱,並根據 ISO 語言代碼儲存在不同的命名空間。要讓這項工作更簡單,可使用翻譯附加元件,它會自動在頁面右上角插入不同語言版本的連結,無論頁面是否已建立。已建立的翻譯頁面會以藍色顯示,未建立則顯示為灰色。
顯示在語言選單中的語言需要由管理員手動設定。如果您希望加入一個未被顯示的語系(語言)的翻譯,請手動在適當的命名空間加入該語言的翻譯,然後寄一封信到 I18N mailing list 請求網站管理員加入該語言。
翻譯指南
關於本站的翻譯原則:
- 歡迎自由建立尚未翻譯的頁面。
- 只有在頂層命名空間的文章才需要翻譯。
- 翻譯頁面的頁面名稱必須與原文頁相同。
- 翻譯頁面必須根據 ISO 語言碼儲存在適當的子命名空間內。
- 請不要寫入諸如「頁面還不存在」之類的內容。
- 開始翻譯前建議先參閱 DokuWiki 手冊。
停用特定頁面的翻譯行為
加入 ~~NOTRANS~~
巨集,該頁面就不會偵測翻譯版本。
DokuWiki 中文化的相關事項
修正差異引擎
DokuWiki 的差異比對引擎預設是逐詞比對而非逐字比對,例如將「我愛你」改為「我恨你」時,會整段標記成「-我愛你」、「+我恨你」,但我們想要的通常是「-我愛你」、「+我恨你」。
可藉由修改 inc/DifferenceEngine.php 解決此問題。
尋找:
- DifferenceEngine.php
function _split($lines) { if (!preg_match_all('/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xs',
取代為:
- DifferenceEngine.php
function _split($lines) { if (!preg_match_all('/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xsu',
修正搜尋索引
原來的 IDX_ASIAN2 常數未包含 CJK ext-B, C, D 等 4 字元 UTF-8 字元,因此這些字在建入索引時不會先分詞。(也就是會把 XXXX 當做一個詞建入索引,這樣一來搜尋 X 就找不到東西,一定要搜尋 XXXX 才行)
要解決這個問題,可在 inc/preload.php 裡加入以下內容,修改內建的常數:
- preload.php
<?php define('IDX_ASIAN2','['. '\x{2E80}-\x{3040}'. // CJK -> Hangul '\x{309D}-\x{30A0}'. '\x{30FD}-\x{31EF}\x{3200}-\x{D7AF}'. '\x{F900}-\x{FAFF}'. // CJK Compatibility Ideographs '\x{FE30}-\x{FE4F}'. // CJK Compatibility Forms "\xF0\xA0\x80\x80-\xF0\xAA\x9B\x9F". // CJK Extension B "\xF0\xAA\x9C\x80-\xF0\xAB\x9C\xBF". // CJK Extension C "\xF0\xAB\x9D\x80-\xF0\xAB\xA0\x9F". // CJK Extension D "\xF0\xAF\xA0\x80-\xF0\xAF\xAB\xBF". // CJK Compatibility Supplement ']');
原始定義可參見 inc/indexer.php。
DokuWiki 中文化的用詞
正體(繁體)中文版的詞彙翻譯如下:
原文 | 統一譯法 | 不使用譯法 |
---|---|---|
(user) account | 帳號 | 賬戶 |
admin | 管理員 | 管理人 |
anonymous | 匿名 | |
child namespace | 子命名空間 | 子分類名稱、子級分類名稱 |
database | 資料庫 | 數據庫 |
developer | 開發人員 | 開發者 |
file extension | 副檔名 | 擴展名 |
group | 群組 | 組 |
link | 連結 | 鏈接 |
namespace | 命名空間 | 分類名稱、分類空間 |
page | 頁面 | 網頁 |
parent namespace | 母命名空間 | 父分類名稱、父級分類名稱 |
plugin | 附加元件 | 插件 |
primary key | 主鍵 | |
revert | 還原 | |
search | 搜尋 | 尋找、搜索 |
server | 伺服器 | 服務器 |
sidebar | 側欄 | 側邊欄、邊欄 |
site | 網站 | 站台、站點 |
sitemap | 網站地圖 | 站台地圖、索引 |
subnamespaces | 子分類名稱 | 子級分類名稱 |
template | 範本 | 模版、樣板 |
trace | 足跡 | |
user | 使用者 | 用戶 |
webserver | 網頁伺服器 | 網頁服務器 |
(this) wiki | (本)wiki | 維基、圍紀、共筆網站 |