2005年5月22日 星期日

Gallery 2 多語言支援的時間亂碼問題

和 tel 在 DreamHost 上試裝 Gallery 2 Beta 3,安裝還滿簡單的,Step by step 作就是了,倒是除了圖片和程式本身以外很多東西都丟到資料庫了(和 Gallery 1 不用資料庫相比),資料庫裡居然有 48 tables,整個架構和 Gallery 1 比起來複雜許多。



整個看起來都是用 utf-8,但中文化得不太完全,而且顯示時間的部分不知道為什麼反而是 Big5 (西元幾年幾月幾日) 後來找了一下才發現這好像不是訊息翻譯的問題,而是 php 就這樣輸出了,tel 研究完說是 DreamHost 上的 php 沒有載入 iconv,可是我們又不能改 php.ini,這...

後來找到這篇,DreamHost 可以讓使用者自己編譯 php,應該是可行的做法之一,另一個方法則是把時間部分直接用 04/03/04 這樣而不要變成中文,以下是 tel 提供的解法,要修改兩個地方:



Gallery 2 核心的部分改



modules/core/classes/GalleryTemplateAdapter.class, Line 171

function date($params, &$smarty) {

第一行加入 if(empty($params['format'])){$params['format']= '%D';}



#diff GalleryTemplateAdapter.class GalleryTemplateAdapter.class.orig

172,175d171

< < /* add for no iconv by cykao 20050522 */

< if(empty($params['format'])){$params['format']= '%D';}

<

180d175

<







EXIF 的時間顯示是在 plugin 裡,要改

modules/exif/classes/ExifHelper.class, Line 333

$value = strftime('%x %X', $time);

改成

$value = strftime('%D %T', $time);



#diff modules/exif/classes/ExifHelper.class modules/exif/classes/ExifHelper.class.orig

333,336c333

< // change for no iconv by cykao 20050522

< $value = strftime('%D %T', $time);

< // $value = strftime('%x %X', $time);

<

---

> $value = strftime('%x %X', $time);