國際化

PmWiki 是支援國際化的網頁的,這表示在「網頁名稱」中可以有重音符號。 甚至在PmWiki的各種提示文字中,您都可以客製化成您自已的語言。 大部分的客製化都是藉由 XLPage() function 來達成的。

在PmWiki的系統中,大部分的翻譯詞句是儲在在一個wiki頁面中,(通常名稱為 XLPage,但是您也可以給予它任何的名稱)

PmWikiCs Česky (Czech) ~ XLPage
PmWikiAr Arabic ~ XLPage
PmWikiBg Bulgarian ~ XLPage
PmWikiZhTw Chinese (Traditional) ~ XLPage
PmWikiZhCn Chinese simplified ~ XLPage
PmWikiDa Dansk ~ XLPage
PmWikiDe Deutsch ~ XLPage
PmWikiEn English ~ XLPage
PmWikiEs Español ~ XLPage
PmWikiEo Esperanto ~ XLPage
PmWikiFa Farsi (Persian) ~ XLPage
PmWikiFr Français ~ XLPage
PmWikiEl Greek ~ XLPage
PmWikiId Indonesian ~ XLPage
PmWikiIt Italiano ~ XLPage
PmWikiJa Japanese ~ XLPage
PmWikiKr Korean ~ XLPage
PmWikiLv Latviešu (Latvian) ~ XLPage
PmWikiLt Lietuvių (Lithuanian) ~ XLPage
PmWikiMk Macedonian ~ XLPage
PmWikiHu Magyar (Hungarian) ~ XLPage
PmWikiNl Nederlands ~ XLPage
PmWikiNo Norsk ~ XLPage
PmWikiPl Polski ~ XLPage
PmWikiPt Portuguese ~ XLPage
PmWikiPtBr Portuguese (Br) ~ XLPage
PmWikiRo Românã ~ XLPage
PmWikiRu Russian ~ XLPage
PmWikiSq Shqip ~ XLPage
PmWikiSk Slovenčina ~ XLPage
PmWikiSi Slovenščina ~ XLPage
PmWikiFi Suomi ~ XLPage
PmWikiSv Svenska ~ XLPage
PmWikiTr Türkçe ~ XLPage
PmWikiTl Tagalog ~ XLPage
PmWikiTa Tamil ~ XLPage
PmWikiUk Ukrainian ~ XLPage
PmWikiVi Việt ngữ ~ XLPage

讀取翻譯文字的頁面

目前已有許多它國語言的翻譯,它們是由 pmichaud.com 網站在維謢的。您可以在http://www.pmwiki.org/pub/pmwiki/i18n/ 取得各國語言翻譯的壓縮檔。安裝的方法很簡單,只要下載您所需要的翻譯壓縮檔,並解壓縮至含有您pmwiki.php 安裝的資料夾。每一個壓縮檔中含有數個頁面檔案,將要被放置在您的wikilib.d/ 資料夾;另外,還有一些特定的語法,用來使翻譯的語言可以讀取非 iso-8859-1 (PmWiki預設的)的字元。您也可以使用UTF-8? 的字元組。

一旦翻譯的語言安裝完成,您必須修改您的config.php 檔案,來啟用安裝好的語言。例如,想要啟用安裝好的「法語檔案」,您必須輸入:

XLPage('fr','PmWikiFr.XLPage');

這表示讀取PmWikiFr.XLPage中的內容,作為法語 ('fr')的翻譯。若您希望系統讀取多個頁面中的內容作為翻譯,也是絕對可行的。所以,您可以建立您自已的翻譯內容,而不需要改動語言壓縮檔中所提供的內容。只需要建立一個新頁面,(見下面範例)並使它在讀取順序的最上方即可。請確定您所翻譯的文字頁面在較高的位置,如下:

XLPage('fr','PmWikiFr.XLPageLocal');  # 我自已翻譯的文字
XLPage('fr','PmWikiFr.XLPage');       # 國際化語言壓縮檔中的內容

若您想為您的網站提供多國語言的支援,並使用Wiki Group?來作為不同的語言的網站部分,您也可以把不同語言的啟用程式碼放置於各別的翻譯內容資料夾(請參見 Group Customizations?)例如:如果您的網站有法語及英語的版本,而法語頁面放置於Fr頁面組中;那麼您可以建立一個名為Fr.php 的檔案,並將它放置於local/ 資料夾中,檔案的內容包含:

<?php if (!defined('PmWiki')) exit();
##change to French language
XLPage('fr','PmWikiFr.XLPage');

您也可以建立一個名為PmwikiFr.php的檔案,輸入如上的內容,如此就可以翻譯 PmwikiFr 頁面組中的頁面。您不需要建立En.php 檔案,因為英語已是預設的語言。

提供多國語言支援的另一個解決方案是在config.php加入以下的內容,它將會找尋在頁面組中有無 XLPage,若是有的話,即會讀取頁面作為翻譯文字。

    
$xlpage = FmtPageName('$Group.XLPage', $pagename);
if (PageExists($xlpage)) XLPage($xlpage, $xlpage);

使用這個方法時,您必須複製相對應的 XLPage 至需要不同語言支援的頁面組中。

請參見Cookbook:MultiLanguage Display content in different languages on a page by user's choice

建立新的翻譯

若是沒有您所需要的語言之翻譯,自已建立一個也是很簡單的!一個 XLPage 翻譯的格式非常簡單,只有下列的一行的格式:

'phrase' => 'translated phrase',

其中,"phrase" 是可以被翻譯的詞語(denoted by $[phrase]) in PmWiki's $...Fmt variables, 而 "translated phrase" 則是您所想要的特定語言詞語。例如,在PmWikiFr.XLPage)的其中一行:

'Search' => 'Rechercher',

上面這一行,將會把"$[Search]" 翻譯成法語的 "Rechercher"。

翻譯的起點,從 Localization:XLPageTemplate 開始最好,其中含有最重要的PmWiki詞語。翻譯它們便可完成大部份的翻譯。

若是您完成了一份新的 PmWiki 翻譯,請考慮將它們增加至main PmWiki site。如此,這份翻譯將會被增加至各國語言翻譯的壓縮檔,使得其他使用者也可因此受惠!

"i18n" 是英文中"internationalization"的縮寫,因為從開頭的 "i" 到末尾的 "n" 一共有18個字母,而且全部打出來實在太麻煩了。

在連結中使用"特殊符號"

想要在WikiLinks使用"特殊殊號",例如德語中的「變音」(umlauts)。您必須設定您的網路主機,以確保PmWiki能夠使用正確的符號表。

若是您的權限不足以更改您網路主機的設定,您可以設定PmWiki,啟用它的XLPage選項(參見 XLPageTemplate)來啟用特定的地區語言。

例如在啟用德語的變音中,您必須:

請注意,設定地區的選項依照作業系統的不同,或者特殊的安裝方法而有所差異。

Notes

若我的wiki系統已在config.php設定了別的地區語言,我要如何把一部分的頁面組設定回英文的呢?

請使用$XLLangs = array('en');於頁面組中的 group customization? 檔案。

若我的wiki系統預設的地區語言為英文,而我只需要單一頁面(或者單一頁面組)的語言為西班牙文。我需要設定此頁面(組)的設定檔(configration file)為 XLPage('es','PmWikiEs.XLPage');嗎?

是的,這是最常見及有效的方法。然而,若您有數個分散的頁面,或者有數個不同的地區語言,您可以在config.php檔案中,就設定讀取所有的地區語言檔案,這樣在維謢上會有較高的便利性。如下面所示:

   XLPage('es','PmWikiEs.XLPage');
   XLPage('fr','PmWikiFr.XLPage');
   XLPage('ru','PmWikiRu.XLPage');
   $XLLangs = array('en');

接下來,在每個頁面(組)的設定檔案(configuration file)中,您只需要使用 $XLLangs = array('es')來設定為您所想要的地區語言(例如在此為西班牙文)。請注意:雖然這個方法雖然在維謢上較為便利,但是可能會拖慢讀取的速度,因為系統必須所有語言的字典檔案,即使這個頁面並沒有用到那些語言。

語言設定中的第一個參數(parameter)的用途為何?要怎麼使用它呢?

XLPage的作用為使系統讀取多組地區語言的翻譯。而第一個參數的用途為使XLPage可以被辨識出來。

例如,若使用者想要提供兩種地區語言:「法文」及「加拿大式法文」。使用者可以不用將它視為兩個完全不同的語言來維謢,使用者只需要設定:

    XLPage('fr', 'PmWikiFr.XLPage');
    XLPage('fr-ca', 'PmWikiFrCa.XLPage');

PmWikiFr.XLPage 將含有所有的標準法語翻譯, 而PmWikiFrCA.XLPage 則只需要含有"加拿大式"的法語翻譯詞句 --即和標準法語翻譯不同的部分即可。

第一個參數的作用即為辨識這兩個不同的翻譯。 另外,在config.php檔案中,可以使用 $XLLangs variable 來變更地區語言的順序。所以,若是其中一個頁面(組),使用者只想要用標準法語的翻譯, 使用者可以設定:

    $XLLangs = array('fr', 'en');

PmWiki 將只會使用'fr' 和 'en' 這兩組翻譯(並以此順序)。不論在XLPage()設定中,有多少種地區語言翻譯被讀取。

幫助PmWiki地方化的工具

藉由下面的指引,您可以幫助PmWiki地方化為您的語言: