Files

50 lines
1.3 KiB
PHP
Raw Permalink Normal View History

2026-08-31 11:33:59 +08:00
<?php
/**
*+------------------
* madong
*+------------------
* Copyright (c) https://gitee.com/motion-code All rights reserved.
*+------------------
* Author: Mr. April (405784684@qq.com)
*+------------------
* Official Website: https://madong.tech
*/
namespace app\middleware;
use Webman\Http\Request;
use Webman\Http\Response;
use Webman\MiddlewareInterface;
/**
* @author Mr.April
* @since 1.0
*/
class Lang implements MiddlewareInterface
{
private const LANG_MAP = [
'en' => ['en', 'en_US', 'en_AU', 'en_CA', 'en_GB', 'en-US', 'en-AU', 'en-CA', 'en-GB'],
'zh_CN' => ['zh_CN', 'zh_HK', 'zh_TW', 'zh_SG', 'zh-CN', 'zh-HK', 'zh-TW', 'zh-SG'],
];
/**
* @throws \Exception
*/
public function process(Request $request, callable $handler): Response
{
$lang = $request->header('Accept-Language', config('app.lang'));
$langPrefix = substr($lang, 0, 2);
if (array_key_exists($langPrefix, self::LANG_MAP)) {
$locale = self::LANG_MAP[$langPrefix][0]; // 默认选择第一个匹配的语言
} else {
$locale = config('app.lang');
}
// 设置会话中的语言
session('lang', $locale);
locale($locale);
return $handler($request);
}
}