2011年1月30日 星期日

[Flex應用] 動態多國語系模組(Flex+php+MySQL)

好久沒更新BLOG,主要是本法師真的是忙到快被鬼拖走.....
事實上還真的是蠻多東西可以更新的

不過忙歸忙,該做的研究還是要做

在21世紀裡,相信將會是一個地球村的時代,網站也不例外,所以多國語系往往變成網站的必要條件,只是以傳統的做法,做多國語系要不就是事先預定要做幾國(如中、英、日),要不就是先預留幾個欄位以利後續擴充,但說來說去都不脫寫死的方法,UI部分畢竟是固定的,可以透過語系設定檔的方式來做到動態的效果,但資料庫呢?如果說今天有一間公司,他本身有自己的產品資料庫,現在擴大營業了,要走向亞洲區,所以原本的正體中文與簡體中文不夠用,他還要多日文與韓文,此時想必資料庫的結構還有後端程式碼都必需要跟著改,不僅如此,連後台上架的表單也要跟著改;如果再過幾年,他又擴大營業,跨足歐洲,這下又要多英、德、法.....等歐洲語系,然後過幾年後,公司業績不佳,結束了某些國家的業務,語系又要減少,我想講到這邊,如果你是用傳統的方式作多國語系的話,應該已經瘋掉了

有沒有什麼辦法可以避免這樣的窘(冏)境?透過一種設計模式,做到一個真正動態的多國語系,不管你要增加還是減少語系,只要透過簡單的設定,所有介面包含資料庫都會跟著動態調整,這就是這次研究的主題

先來看成果
先設定語系,多個語系以逗號隔開
然後就會動態產生對應的語系欄位
表單也會動態的變化,產生出對應的語系欄位
今年是兔年,以兔子為例,輸入正體中文
輸入英文
輸入日文

然後就對應顯示到各語系欄位上

 好,到這邊都是一般的狀況,如果說現在突然要多一個新的語系

回到語系設定裡面,把要新增的語系打上去,我們以德文為例,新增德文
顯示的欄位就多了德文

新增的表單也自動多了德文欄位
修改的表單也跟著改變了,而原本的資料,透過修改的功能,也就能新增新的語系資料
輸入德文的兔子
修改完成
如果這時要減少語系
到語系設定裡面,把不要的語系刪掉,以日文為例
日文就消失了
當然表單也伴隨修改了
當然這只是一個概念的展示,其實稍微有一點sense的話,就可以聯想到這樣的設計模式可以套用到具有後台的產品資料庫上,範例中的textarea(也可變成text input),就是產品後台的說明 (或產品名稱),然後只要一新增或減少語系,前端的UI就會自動多一個或少一個tab,而後端的程式及資料庫在這種設計模式下,將具有彈性調整的能力,不管你如何增減語系,都不需要變更後端的程式,也不需要變更資料庫的結構,這個簡單範例,我是以Flex+php+MySQL實作,當然你也可以用其他相關的程式來實作

我也把這個範例的連結附給各位,有興趣的可以上去玩玩看
http://www.cloudpeak.idv.tw/multilanguagedemo/multilanguagedemo.html

Kazuya