ThinkPHP8 is unable to use multiple languages properly in multi application mode 1 months ago

按tp8文档里面的来设置,然后切换失败

兜兜转转,不停测试,最终还是得靠搜索引擎,最终的解决方法是在/app/middleware.php中添加下面这行,没有该文件就自己创建一下

// 这是系统自动生成的middleware定义文件
return [
	// 自定义全局中间件
	//多语言添加下面这一行即可
	think\middleware\LoadLangPack::class,
];

然后是config/lang.php配置里面将default_lang设置为空

// +----------------------------------------------------------------------
// | 多语言设置
// +----------------------------------------------------------------------

return [
    // 默认语言
    'default_lang'    => '',  //设置为空
    // 允许的语言列表
    '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,
];

切换只需要入cookie里面写入就OK了

cookie('think_lang',‘en-us’);

©2024 Acyc's Blog. All rights reserved.