一、项目架构
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
发表评论 取消回复