TP5開發多語言切換網站


多語言網站,既是能夠點擊切換語言版本。實際是切換后台數據庫里面的表:

 

在同一數據庫中,新建兩張新聞表,一張以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,到此為止,你已經能夠通過后台選擇不同的表。去添加不同的數據了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM