====== 如何將 Big5 的 Gallery 轉換為 UTF-8 ====== 以前為了將 Gallery 1.4 由 Big5 轉換至 UTF-8 所寫的步驟與程式. ====== 我的環境 ===== FreeBSD 4.9 Release, Gallery 1.4.2 ====== 步驟 ===== ==== Download ==== 首先先到 Gallery 的 download 網頁: [http://sourceforge.net/project/showfiles.php?group_id=7130] 找到符合版本的 zh_TW.utf8 的 language pack. (例如 zh_TW.utf8-pack-1.4.2.tar.gz) ==== 解壓 ==== 將此壓縮檔在 gallery/locale/ 下解開, 會多出一個 zh_TW.utf8 的目錄. 記得 check 是否是 www server 可讀的權限, 不然後面可能會失敗: 此 zh_TW.utf8 目錄及裡面的子目錄 LC_MESSAGES/ 和 flagimage/ 都得讓 www server user 有進入的權限 (x), 一般就是設定成 755. ==== 改變 gallery 設定 ==== 編輯 gallery/config.php, 將$gallery->app->default_language 的值由 "zh_TW" 改為 "zh_TW.utf8". $gallery->app->available_lang[] 也改一下. $gallery->app->locale_alias 則需要系統上有裝相對應的 locale. 將 config.php 轉成 UTF-8 (為了轉換相簿名稱等, 可用 iconv 轉). ==== 轉換相簿內容 ==== 至此, 進入 gallery 應該已經是用 UTF-8 顯示了, 且訊息為中文. 但是相簿內容的資料還沒轉換. 我寫了一個 php script. **使用前請先備份你的資料檔: (在 albums 目錄上一層)** tar zcf backup.tgz albums --exclude '*.jpg' --exclude '*.avi' 這樣就算失敗了還是可以蓋回去. 此程式轉換的內容包括: 相簿: 標題/敘述/摘要, 照片: 標題/關鍵字/評論/額外欄位. === 注意事項 === * 此程式不應該重複執行, 否則可能會有無法預期之後果. * 請先備份您的資料檔, 本程式不負任何損毀之責. * 本程式未經廣泛測試, 如有發現任何問題, [[http://ericyu.org/blog/contacts/|歡迎聯絡我]]. === 程式 === Download: http://ericyu.org/wikidata/gallery-big5-utf8.txt 或由下拷貝: albumList as $album) { foreach ($album_alters as $iter) $album->fields[$iter] = iconv($f, $t, $album->fields[$iter]); $album->save(); $album->load($album->fields["name"]); for ($i = 1; $i <= $album->numPhotos(1); $i++) { $album->setCaption($i, iconv($f, $t, $album->getCaption($i))); $album->setKeywords($i, iconv($f, $t, $album->getKeywords($i))); foreach($album->getExtraFields() as $field) $album->setExtraField($i, $field, iconv($f, $t, $album->getExtraField($i, $field))); for($j = 1; $j <= $album->numComments($i); $j++) { $c = &$album->getComment($i, $j); $c->name = iconv($f, $t, $c->name); $c->commentText = iconv($f, $t, $c->commentText); } } $album->save(); } $albumDB->save(); ?> 記得將第一行的目錄改成你的 gallery 所在目錄, 然後以 php cmd (/usr/local/bin/php) 執行或以 web 方式執行. (PHP 須有將 iconv 支援編譯進去, 您也可自行改用 [[phpfn>mb_convert_encoding]]) 轉換.