使用者工具

網站工具


gallery_b5_u8

差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
gallery_b5_u8 [2006/05/18 07:45]
ericyu
gallery_b5_u8 [2006/05/30 03:38] (目前版本)
ericyu
行 1: 行 1:
 +====== 如何將 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 目錄上一層)**
 +<​code>​
 +tar zcf backup.tgz albums --exclude '​*.jpg'​ --exclude '​*.avi'​
 +</​code>​
 +
 +這樣就算失敗了還是可以蓋回去.
 +
 +此程式轉換的內容包括:​ 相簿: 標題/​敘述/​摘要,​ 照片: 標題/​關鍵字/​評論/​額外欄位.
 +
 +=== 注意事項 ===
 +  * 此程式不應該重複執行,​ 否則可能會有無法預期之後果.
 +  * 請先備份您的資料檔,​ 本程式不負任何損毀之責.
 +  * 本程式未經廣泛測試,​ 如有發現任何問題,​ [[http://​ericyu.org/​blog/​contacts/​|歡迎聯絡我]].
 +
 +=== 程式 ===
 +Download: http://​ericyu.org/​wikidata/​gallery-big5-utf8.txt 或由下拷貝:​
 +<code php>
 +<?php
 +// Written by ericyu, http://​ericyu.org/​
 + 
 +$GALLERY_BASEDIR = "/​home/​ericyu/​public_html/​photo/";​ // 更改為 gallery 目錄
 +require($GALLERY_BASEDIR."​init.php"​);​
 +$f = "​Big5";​ // from encoding
 +$t = "​UTF-8";​ // to encoding
 + 
 +$albumDB = new AlbumDB(false);​
 +$album_alters = array("​title",​ "​description",​ "​summary"​);​
 + 
 +foreach ($albumDB->​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();​
 +?>
 +</​code>​
 +
 +記得將第一行的目錄改成你的 gallery 所在目錄,​ 然後以 php cmd (/​usr/​local/​bin/​php) 執行或以 web 方式執行.
 +(PHP 須有將 iconv 支援編譯進去,​ 您也可自行改用 [[phpfn>​mb_convert_encoding]]) 轉換.
  
gallery_b5_u8.txt · 上一次變更: 2006/05/30 03:38 由 ericyu