多語言網站,既是能夠點擊切換語言版本。實際是切換后台數據庫里面的表:
在同一數據庫中,新建兩張新聞表,一張以us_news_article開頭,另外一張以en_news_article開頭;
這兩張表中,en_存儲中文數據,us_存儲英文數據;
在tp5的database.php數據庫配置文件中。加上以下代碼:
<?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- // | Author: liu21st <liu21st@gmail.com> // +---------------------------------------------------------------------- //引入think框加的Lang類 use think\Lang; //獲取當前語言 $lang=Lang::detect(); //定義`prefix`變量來記錄表前輟,並將其賦初始值 $prefix="wz_"; //根據當前語言類型,設置不同的表前轟 switch ($lang){ case "zh-cn": $prefix="wz_"; break; case "en-us": $prefix="en_"; break; default: $prefix="wz_"; break; } return [ // 數據庫類型 'type' => 'mysql', // 服務器地址 'hostname' => '127.0.0.1', // 數據庫名 'database' => 'wwww', // 用戶名 'username' => 'wwww', // 密碼 'password' => 'wwww', // 端口 'hostport' => '3306', // 連接dsn 'dsn' => '', // 數據庫連接參數 'params' => [], // 數據庫編碼默認采用utf8 'charset' => 'utf8', // 數據庫表前綴 'prefix' => $prefix, // 數據庫調試模式 'debug' => true, // 數據庫部署方式:0 集中式(單一服務器),1 分布式(主從服務器) 'deploy' => 0, // 數據庫讀寫是否分離 主從式有效 'rw_separate' => false, // 讀寫分離后 主服務器數量 'master_num' => 1, // 指定從服務器序號 'slave_no' => '', // 自動讀取主庫數據 'read_master' => false, // 是否嚴格檢查字段是否存在 'fields_strict' => true, // 數據集返回類型 'resultset_type' => 'array', // 自動寫入時間戳字段 'auto_timestamp' => false, // 時間字段取出后的默認時間格式 'datetime_format' => 'Y-m-d H:i:s', // 是否需要進行SQL性能分析 'sql_explain' => false, ];
在database.php中一定要引入類:
然后在,后台模塊啟用這個database.php模塊的代碼:后台調用代碼:
<a href="javascript:;" onclick="setlang('zh-cn')" data-title="中文簡體" data-icon="fa fa-gears">{:lang('zh-cn')}<span class="layui-badge-dot"></span></a> <a href="javascript:;" onclick="setlang('en-us')" data-title="英文" data-icon="fa fa-gears">{:lang('en-us')}</a>
還需要一段,ajax提交代碼:
<script> function setlang(lang) { $.ajax({ type:'get', url:"{:url('index.php/base/setlang/set')}?lang="+lang, success:function(data){ if(data==1){ window.location.reload(); } } }) } </script>
在tp5app目錄下新建模塊base:
然后在setlang.php添加以下代碼:
<?php namespace app\base\controller; use think\Controller; use think\Lang; class Setlang extends Controller { // 緩存當前語言 public function set(){ if(request()->isAjax()){ $lang=Lang::detect(); cookie('think_var',$lang); return json(1); } } }
ok,到此為止,你已經能夠通過后台選擇不同的表。去添加不同的數據了!