一、项目架构
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() . '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');
}
}
|