一、项目架构

www  项目部署目录
│  ├─app  多应用目录
│  │  ├─api  应用目录
│  │  │  ├─config  应用配置目录
│  │  │  │  ├─lang.php  扩展多语言配置
│  │  │  │  └─...
│  │  │  ├─controller  控制器目录
│  │  │  │  ├─Index.php  控制器
│  │  │  │  └─...
│  │  │  ├─lang  多语言包目录
│  │  │  │  ├─en-us  英文自定义语言包目录
│  │  │  │  │  ├─common.php  自定义语言包
│  │  │  │  │  ├─user.php  自定义语言包
│  │  │  │  │  └─...
│  │  │  │  ├─zh-cn  中文自定义语言包目录
│  │  │  │  │  ├─common.php  自定义语言包
│  │  │  │  │  ├─user.php  自定义语言包
│  │  │  │  │  └─...
│  │  │  │  ├─en-us.php  英文语言包  可选
│  │  │  │  └─zh-cn.php  中文语言包  可选
│  │  │  ├─middleware.php  中间件,加载多语言包,必须要有
│  │  │  └─...
│  │  ├─admin  应用目录
│  │  └─...
│  ├─config  全局配置目录
│  │  ├─lang.php  多语言配置
│  │  └─...
│  └─...
二、文件内容

1、www/app/api/config/lang.php

<?php
return [
    // 扩展语言包
    'extend_list' => [
        'zh-cn' => [
            app()->getAppPath() . 'lang\zh-cn\common.php', //注意如果是在某个应用目录底下,还需要跟上应用目录 例如    app()->getAppPath() . 'home\lang\zh-cn\common.php', 在home底下
            app()->getAppPath() . 'lang\zh-cn\index.php',
        ],
        'en-us' => [
            app()->getAppPath() . 'lang\en-us\common.php',
            app()->getAppPath() . 'lang\en-us\index.php',
        ],
    ],
];
2、www/app/api/lang/en-us.php

<?php
return [
    'welcome' => 'welcome to site',
];
3、www/app/api/lang/en-us/common.php

<?php
return array(
    'error_tips' => 'This is an error message',
    'form_cells' => array(
        'title' => 'Please enter the title of the article',
        'author' => 'Please enter the author of the article'
    ),
);
4、www/app/api/middleware.php

<?php
return [
    // 多语言加载
    \think\middleware\LoadLangPack::class,
];
5、www/app/config/lang.php

<?php
// +----------------------------------------------------------------------
// | 多语言设置
// +----------------------------------------------------------------------
 
return [
    // 默认语言
    'default_lang' => env('lang.default_lang', 'zh-cn'),
    // 允许的语言列表
    'allow_lang_list' => ['zh-cn', 'en-us'],
    // 多语言自动侦测变量名
    'detect_var' => 'lang',
    // 是否使用Cookie记录
    'use_cookie' => true,
    // 多语言cookie变量
    'cookie_var' => 'think_lang',
    // 多语言header变量
    'header_var' => 'think-lang',
    // 扩展语言包
    'extend_list' => [],
    // Accept-Language转义为对应语言包名称
    'accept_language' => [
        'zh-hans-cn' => 'zh-cn',
    ],
    // 是否支持语言分组
    'allow_group' => true,
];

三、切换语言

<?php
//
// 自行补充Base基类
//
namespace app\api\controller;
 
use app\api\controller\Base;
use think\App;
 
class Index extends Base
{
    protected $app;
    /**
     * 构造方法
     */
    public function __construct(App $app)
    {
        parent::__construct($app);
    }
    /**
     * 切换语言
     */
    public function language()
    {
        $lang = input('get.lang');
        if (!in_array($lang, config('lang.allow_lang_list'))) {
            $lang = 'zh-cn';
        }
        cookie(config('lang.cookie_var'), $lang);
        return redirect(url('index/index'));
    }
    /**
     * 首页
     */
    public function index()
    {
        echo lang('form_cells.title');  //会访问/ home\lang\en_us\common.php 底下的配置

        echo lang(''welcome)  //会访问home en_us.php 的配置。
    }

访问如同 /home/index/index?lang=en_us

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部