1. 前幾天開發一個雙語網站企業站 , 實現思路大部分情況下 , 我們可以想到是使用一個語言包數組文件 . key和value的形式 , 我們在展示界面時 , 輸出數組對應的key而不是固定寫死這個值
大概的設計是這樣的 , 有兩個這樣的php文件
cn.php
en.php
里面就是返回一個數組
return array(
'name'=>'姓名',
'age'=>'年齡'
)
return array(
'name'=>'Name',
'age'=>'Age'
)
2. 當我需要在界面上顯示內容的時候 , 需要首先根據我們自己的判斷進行加載不同的語言包文件 , 這個判斷可以在默認情況下使用瀏覽器的ua
if(IS_CHINESE)
$lang = require('languages/cn.php')
}else{
$lang = require('languages/en.php')
}
輸出的時候直接使用這個數組 $lang['name'] $lang['age']
3. 而后端數據部分也是應該是雙語的 , 那就要求我們在設計數據庫的時候一定要加上英文內容的字段 , 比如 title title_en
在查詢的時候也是在判斷后 , 取數據的sql里進行取不同的字段
if(IS_CHINESE)
$sql="select title from article"
}else{
$sql="select title_en as title from article"
}
這樣才能做到數據部分也是雙語的
4. 當前台選擇不同的語言時 , 我們還是需要前端使用cookie記住當前的語言 , php再去cookie中讀取 , 加入到上面的判斷語句之前 , 並且呢后台也要可以配置默認語言 ,預覽效果可以看這里http://www.duzbearings.com
if(isset($_COOKIE['lang'])){
$lang = $_COOKIE['lang'];
}else{
if($_CFG['siteDefaultLang'] == 'Auto'){
if (strstr(strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']), 'zh-cn') OR strstr(strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']), 'zh-tw')){
$lang = 'Chinese';
}else{
$lang = 'English';
}
}else{
$lang = $_CFG['siteDefaultLang'];
}
define('IS_CHINESE', ($lang == 'Chinese') ? 1 : 0);