ThinkPHP5 语言包加载

ThinkPHP5 语言包加载

 

在项目中,遇到的多语言网站仍是比较频繁的php

下面来讲下怎么加载多语言,这次加载多语言只是用英文(EN)和中文(ZH-CN)示例html

只能用为页面显示静态数据转换,数据库则不可数据库

 

1.在你的项目工程下修改配置文件config.php,默认工程application/config.php浏览器

修改如下两句,若是有就修改没有就添加缓存

// 是否开启多语言
'lang_switch_on'         => true,
// 默认语言
'default_lang'           => 'zh-cn',

2.添加完步骤一以后在你的工程下建立lang文件夹,里面建立zh-cn.php文件,写入如下代码app

<?php
return [
    'User id'                                               => '会员ID',
    'Username'                                              => '用户名',
    'Nickname'                                              => '昵称',
];

3.在你的工程下的common.php或者function.php中添加如下代码,这段代码用于检测当前语言并转换测试

if (!function_exists('CeoeLang'))
{
    /**
     * 获取语言变量值
     * @param string    $name 语言变量名
     * @param array     $vars 动态变量值
     * @param string    $lang 语言
     * @return mixed
     */
    function CeoeLang($name, $vars = [], $lang = '')
    {
        if (is_numeric($name) || !$name)
            return $name;
        if (!is_array($vars))
        {
            $vars = func_get_args();
            array_shift($vars);
            $lang = '';
        }
        return \think\Lang::get($name, $vars, $lang);
    }
}

4.在你的控制器中新增一个类为Index.php及与之对应的模板,再建立一个基类为Base.php用于加载fetch

在Base.php中写入如下代码网站

<?php
/**
 * File Description
 *
 * @author: Thins <ceoecc@qq.com> 2018/4/9/009
 */
namespace app\index\controller;

use think\Controller;
use think\Lang;
class Base extends Controller
{
    public function _initialize()
    {
        // 语言检测
        $lang = strip_tags(Lang::detect());
        $controllername = strtolower($this->request->controller());
        $this->loadlang($controllername);
        // 用于作页面显示当前语言值
        $this->assign('language',$lang);
    }
    /**
     * 加载语言文件
     * @param string $name
     */
    protected function loadlang($name)
    {
        Lang::load(APP_PATH . $this->request->module() . '/lang/' . Lang::detect() . '/' . str_replace('.', '/', $name) . '.php');
    }
}

在Index.php中写入如下代码this

<?php
namespace app\index\controller;

class Index extends Base
{
    public function index()
    {
        $this->assign('test',CeoeLang('Username'));
        return $this->fetch();
    }
}

在模板index.html中添加如下代码

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
{$test}
</body>
</html>

5.打开浏览器访问此项目工程,你会发现默认加载的是中文版,而后你在地址后面加上?lang=en再刷新浏览器就会是英文,若是你不想每次访问链接都加上这一个参数,那么你能够写入缓存,文件,数据库,只要每次检测就好了。

6.根据你的项目树来配置相应的lang,也能够一个模块一个lang文件,依需求而定

7.在这里列举我测试的项目目录

相关文章
相关标签/搜索