前期文章介紹了Plone的內容查詢操作,包括如何建立詞彙表、測試選項欄位、安裝導覽查詢模組以及啟用導覽查詢選項等等,接著說明如何使用模組展示圖檔和影片以及批次上傳的設定方法,另外也將討論中文訊息的支援機制。
操作介面支援JavaScript和Flash兩種方式,預設是使用JavaScript。選定檔案後,預設可以指定標題,如圖21所示。
|
▲圖21 Quick Upload操作介面。 |
中文訊息的支援機制
Plone內部使用gettext工具處理多國語文的支援,翻譯的內容先存在.po檔案裡,經過系統編譯成.mo檔案,就可以直接被Plone讀取。
系統翻譯檔由plone.app.locales模組管理,正體中文的翻譯檔位於「locales/zh_TW/LC_MESSAGES」目錄裡。
想要設定訊息語系為正體中文,請到Site Setup的Language指定,記得勾選「Show country-specific language variants」,這樣才會出現【Chinese (Taiwan)】選項,如圖22所示。
|
▲圖22 設定訊息語系為正體中文。 |
以之前的mysite.eventfolder模組為例,在mysite/eventfolder/__init__.py檔案裡,看得到它載入zope.i18nmessageid的MessageFactory,透過message factory可以把程式碼裡以「特殊符號」標記的訊息字串,萃取成為待翻譯的內容(圖23)。
|
▲圖23 message factory的宣告範例。 |
所謂特殊符號標記的訊息字串,常見的有兩種方式,其中的一種是以「底線符號」來標記,就如同圖24所示。
|
▲圖24 底線符號標記的訊息字串。 |
另一種是以「i18n:」字樣來標記,包括i18n:domain和i18n:translate等,如圖25所示。
|
▲圖25 i18n:字樣標記的訊息字串。 |
利用i18ndude模組,可以協助萃取和管理訊息字串,在develop.cfg新增一個i18ndude設定區段,內容如圖26所示。執行「bin/buildout -c develop.cfg」後,就可以在bin目錄裡找到i18ndude工具程式。
|
▲圖26 i18ndude設定區段範例內容。 |
接著,要確認在「mysite/eventfolder/configure.zcml」檔案裡已完成<i18n:registerTranslations directory="locales" />的設定,如圖27所示。
|
▲圖27 configure.zcml的i18n設定範例。 |
同時也要建立locales相關的目錄,它們是用來存放.po檔案,如圖28所示。
|
▲圖28 建立locales相關目錄。 |
訊息字串的翻譯
首先,使用i18ndude rebuild-pot建立.pot檔案,它是產生.po檔案的基礎,再用i18ndude sync建立.po檔案的內容(圖29)。此時會注意到i18ndude rebuild-pot指令最後接的是一個「點符號」,代表現行目錄的位置。
|
▲圖29 使用i18ndude建立.po檔案的範例。 |
接著,編輯「locales/zh_TW/LC_MESSAGES/mysite.eventfolder.po」的內容,除了記錄人員和時間的資料外,就是要按照msgid的英文字串,在msgstr填入對應的中文字串(圖30)。
|
▲圖30 編輯.po內容的範例。 |
編輯完成後,再用msgfmt指令把.po檔案編譯成.mo檔案,指令細節如圖31所示。
|
▲圖31 使用msgfmt編譯.po成為.mo檔案。 |
重啟系統後,就可以看到上述訊息翻譯的成果,如圖32所示。
|
▲圖32 mysite.eventfolder訊息中譯範例。 |
結語
本文示範了幾個展示多媒體的模組,更多應用就留待讀者探索,例如想要線上顯示PDF檔案的話,可以安裝wc.pageturner模組。有了圖片和影片的展示模組,結合Faceted Navigation之後,就可以做到批次顯示多媒體的搜尋結果。
訊息字串的中文化,需要建立.po檔案並進行編譯,如果也想把內容中文化,就得借助Products.LinguaPlone模組。另外,JavaScript檔案也有獨立的訊息中文化方式,必須在browser/configure.zcml檔案裡指定要額外讀取的.js檔案位置。
下次將介紹外部資料庫的連結方式,讓Plone的整合功能更上層樓。