您在這裡

Localizer的升級問題(二)5.10升到5.34

tky's 的頭像
tky 在 2008-06-23 (週一) 20:11 發表

好一陣子前Localizer就已經從5.10版大躍進到5.34版去了,不過tky按照手冊嘗試升級的結果就是不斷地看到白屏畫面,束手無策。勉強使用Yelban修改過的版本撐著。

不過每次跑「可用更新」頁面時,就會看到嚇人的安全性警示標誌,隨著版本提升,這個標誌就越嚇人。
於是tky只好硬著頭皮不管手冊的說法,嘗試用自己的方式去升級。按邏輯想一下,居然幸運給它升級成功了。下面提供一下個人的經驗。

首先到網站上進入維護模式,備份資料庫,接著停用localizer所有的模組。
使用localizer的人應該在網站中的setting.php都會寫入這段程式碼:$conf= array('cache_inc' => 'sites/all/modules/localizer/system/includes/cache.inc',);
請把它註解掉或刪掉,確定伺服器上面的檔案沒有這個內容。
然後把5.10(或更早之前)版本的localizer從伺服器上面搬走或移除掉。
(這幾個動作動作是要讓網站在運作時不要再去讀取localizer所修改的核心模組。)

接下來請強制重新reload一次網站,第一次可能會出現白屏,但第二次應該就會出現沒有localizer修正過核心模組的原本網站了。(如果這一步老是卡在白屏,那就表示你的網站出於不明原因還是依照上述的程式碼在找舊版本的localizer;而你已經將舊版移除了,當然會白屏。請確定上面幾步都有確實做到喔!)

然後就是下載5.34版的localizer,解壓縮後傳到伺服器上去。
進入模組設定頁面,應該就能看到5.34版本的localizer,請全部啟用。
啟用後系統會告訴你去setting.php那裡把這一段程式碼插在最後面:
include_once('sites/all/modules/localizer/localizer_settings.php');
(請確定localizer_settings.php的位置路徑正確)
然後趕快進行一次update流程,應該會看到localizer有許多更新動作。(老天保佑你不要看到紅色的錯誤碼)

接下來,新版的localizer要去使用者權限設定重新為使用者設定存取或進行翻譯的權限,有多少語言就要設多少次。(tky之前忘記做這個,結果使用者反應說,連發表文章都不成,因為沒有給node設定中文語系的權限)

這樣就成啦!

新版的localizer有以下的新功能:
把所有的翻譯工作拆成node的翻譯和介面(分類、選單)的翻譯,放在「內容管理」那裡。
兩種翻譯方式都可以做篩選過濾查詢,濾出要翻譯的字串或node列表。比較一目瞭然,有點像本站之前進行協同翻譯那樣的做法。
(不過介面翻譯那邊不曉得是因為什麼關係,很多字串都看不到原文,只有空白框格;也不確定能否中英文正確對翻)

不過新版localizer的新問題比新功能多很多:
第一個就是主網域會被迫加上語系代碼做為前置詞,本來www.example.com的主網址會被硬生生改寫成www.example.com/zh-hant,或者www.example.com/en。node當然也跑不掉。
就算tky去選項設定那邊叫他不要加前置詞,也是無效。頂多讓node或者自訂的path link沒有前置詞。不過如此一來,網站網址就很不一致。

第二個麻煩就是一些升級之前做過的頁面設定會跑掉,而且不曉得怎麼修復。
比方說tky做了不少node手冊大綱的編排。升級之後,這些手冊大綱的階層關係都跑掉了,透過手冊頁面去重設一次也沒有用,搞得tky一個頭兩個大也不知道該怎麼辦,只好擱著。
還有就是有些版型會自動隱藏second link,按下primary link才會顯示;這也在升級之後就失效了。而且還不是很一致,有些有效、有些無效,重設無效,吐血吐不完。

第三個麻煩就是和其他模組的衝突:
比方說node clone模組,方便到不行,但是升級之後想要任意複製有設定語系的node type,就會被localizer的錯誤碼擋下來,說要先解除翻譯對應關係。真見鬼了,tky只是想要複製node而已啊!
再來好像也會影響到views裡面其他模組所提供的參數或過濾項目,不過不是很確定是localizer的關係。

第四個麻煩很特別,就是會破壞mission的內容。很怪吧。
Localizer的一個特色就是可以針對不同語系的首頁給不同的mission、網站名稱等等,升級之後第一個看到的問題就是原本的mission內容都亂掉,程式碼被從中截斷。
一開始tky想破了腦袋也不曉得是怎麼回事,就用原本mission裡面的字串去搜尋資料庫,看看到底是哪個資料表有問題。結果當然是找到localizer的資料表(詳細名稱忘了)。原來升級之後的資料表在mission的內容欄位部分,文字上限被修改成為700個字元,原本內容超過這個數字,在重提資料時自然就會被截斷。版面就自然因為程式碼不全而亂掉了。解決辦法就是把上限提高囉!

最後的麻煩就是:沒有6.x版本的,不曉得會不會出。

本來升級完成是一整個歡樂的,不過看問題那麼多,真有點傻掉了。
一直在考慮要不要換i18n回去算了,不過念在已經做過太多雙語化工作,這一弄恐怕又是大工程,只好放棄。忍著看下一版會不會好些點。

上述的經驗和分析在這裡分享給大家。雖然不是很多人在用這個模組,不過因為tky自己吃了這一頓苦,比較希望有用到的人可以無痛地升級成功,免掉安全性的問題。

如果有人知道某些麻煩要怎麼解決的話,也請趕快給tky一個回應,多謝啦!