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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/65110.html
標籤:PHP
上一篇:2020年PHP 面試問題(一)
