Cakephp 中多語系網站的設計

edited 十月 2013 in CakePHP
Cakephp 中多語系網站的設計

目前我是這樣做的 如果網站有 中、英、日 三個語系

我寫三個ctp (view)
product_list_tw
product_list_en
product_list_jp

因為他們撈的資料都一樣

所以在controller的地方
就寫成

//三個語系的共用資料
function product_list {
//撈出頁面用的資料
}

//中文網頁
function product_list_tw {
$this->product_list()
}

//英文網頁
function product_list_en {
$this->product_list()
}

//日文網頁
function product_list_jp {
$this->product_list()
}

可是問題來了~以後還會出現簡中...等等更多語言

一直在controller一直加funtion也不是辦法

所以想請教大家,關於多語系 大家是怎麼做的呢?


原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=6597

評論

  • edited 四月 2012
    喔喔 我最前面的專案 也是用過用 __('english')
    他會依現在的語系轉換到對應的 語言

    不過因為我做的專案都是形象網
    也就是中文和英文網頁…他們其實view不太一樣 (有位置不一樣、圖檔不一樣、甚至有的連風格也不太一樣)

    所以用 __('english') 只能轉換要用到的文字
    剩下的都要用人工一個一個檢查,不如直接拉一個新view 比較快

    才會像我上面這樣 一個語系一個view的檔案 product_list_tw 、 product_list_en

  • edited 四月 2012
    在同一頁的下方有提到一個 view 的解決方式
    // App Controller Code.
    function beforeFilter() {
        $locale = Configure::read('Config.language');
        if ($locale && file_exists(VIEWS . $locale . DS . $this->viewPath)) {
            // e.g. use /app/views/fre/pages/tos.ctp instead of /app/views/pages/tos.ctp
            $this->viewPath = $locale . DS . $this->viewPath;
        }
    }
    

    這個操作完成後你就不需要設計那麼多的方法,只要在對應的位置放入其他語言的 view 即可
Sign In or Register to comment.