DokuWiki 的使用者界面可設定使用的語言,只要設定好語言配置項即可。
使用者界面可使用的語言列表可參見DokuWiki Localization Hub。
若要把 DokuWiki 翻譯為你的語言,請造訪 http://translate.dokuwiki.org/,選擇你的語言,透過網路界面修改翻譯,送出後就會建立一個新的語言包。
翻譯後請把語言包寄給 andi [at] splitbrain [dot] org,它就會被加入新釋出的版本。
翻譯者應加入 I18N Mailing List 以獲得新的訊息,如新增的字串或需要翻譯的東西。
大多數的插件只提供英語及一種其他語言,歡迎你貢獻未加入的語言本地化,只翻譯幾個句子也無所謂,幾個字也能改善這個插件。
以下說明如何建立翻譯與儲存需要的檔案。
對於其他問題或尋求一般性協助,你可以寫信到 I18N-Mailinglist 或在 IRC-Channel 提問。
改變翻譯內容是個 開發中 的功能,將會在下個版本加入(可能在 2011 年 4 月)。
DokuWiki 之中有許多翻譯文字,例如註冊、密碼遺忘的 email 或編輯表格上方的文字。你可以修改它們,複製 inc/lang/<ISO語言碼>/<名稱>.txt 到 conf/lang/<ISO語言碼>/<名稱>.txt,然後修改複製的檔案。如此一來你的修改不會被新版覆蓋。你也可以對插件做同樣的事(如 ACL 編輯器權限管理的協助文字),複製 lib/plugins/<插件>/lang/<ISO語言碼>/<名稱>.txt to conf/plugin_lang/<plugin>/<ISO語言碼>/<name>.txt,然後修改它們即可。
我們很鼓勵 DokuWiki 說明文件的翻譯。翻譯的頁面應使用與原文相對應的頁面名稱,並根據 ISO 語言碼儲存在不同的命名空間。要讓這項工作更簡單,可使用翻譯插件,它會自動在頁面右上角插入不同語言版本的連結,無論頁面是否已建立。已建立的翻譯頁會以藍色顯示,未建立則顯示為灰色。
顯示在語言選單中的語言需要由管理員手動設定。如果您希望加入一個未被顯示的語系(語言)的翻譯,請手動在適當的命名空間加入該語言的翻譯文章,然後寄一封信到 I18N mailing list 請求網站管理員加入該語言。
關於本站的翻譯原則:
加入 ~~NOTRANS~~ 巨集,該頁面就不會偵測翻譯版本。
DokuWiki 的差異比對引擎預設是逐詞比對而非逐字比對,例如將「我愛你」改為「我恨你」時,會整段標記成「-我愛你」、「+我恨你」,但我們想要的通常是「-我愛你」、「+我恨你」。
可藉由修改 inc/DifferenceEngine.php 解決此問題。
尋找:
function _split($lines) { if (!preg_match_all('/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xs',
取代為:
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 裡加入以下內容,修改內建的常數:
<?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。