You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.9 KiB
108 lines
2.9 KiB
<?php
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
use Closure;
|
|
use Illuminate\Support\Facades\App;
|
|
use Illuminate\Http\Request;
|
|
|
|
class SetLang
|
|
{
|
|
/**
|
|
* Handle an incoming request.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @param \Closure $next
|
|
* @return mixed
|
|
*/
|
|
public function handle2($request, Closure $next)
|
|
{
|
|
$user_locale = $request->header("lang");
|
|
// dd($user_locale);
|
|
if (empty($user_locale) || !in_array($user_locale, ['cn', 'en', 'tw', 'tr'])) {
|
|
// $user_locale = 'en';
|
|
$user_locale = 'zh-CN';
|
|
}
|
|
if ($user_locale == 'cn') $user_locale = 'zh-CN';
|
|
if ($user_locale == 'tw') $user_locale = 'zh-TW';
|
|
$app_locale = App::getLocale();
|
|
// dd($app_locale);
|
|
if ($app_locale !== $user_locale) {
|
|
echo 3333;
|
|
App::setLocale($user_locale);
|
|
}
|
|
// dd(App::getLocale());
|
|
return $next($request);
|
|
}
|
|
|
|
private static function useQuery($request)
|
|
{
|
|
|
|
$uri = $request->path();
|
|
|
|
$map = [
|
|
'api/app/exchange/getCoinInfo',
|
|
'api/exchange/getCoinInfo',
|
|
'api/app/article/list',
|
|
'api/article/list',
|
|
'api/app/user/logout',
|
|
'api/user/logout'
|
|
];
|
|
if (!in_array($uri, $map)) return $request->header("lang");
|
|
|
|
if (!isset($request->query()['lang'])) return $request->header("lang");
|
|
|
|
return $request->query()['lang'];
|
|
}
|
|
|
|
public function handle($request, Closure $next)
|
|
{
|
|
$user_locale = $request->header("Lang");
|
|
$user_locale = self::useQuery($request);
|
|
|
|
|
|
// 语言缩写
|
|
$suoxie = [
|
|
'cn',
|
|
'en',
|
|
'tw',
|
|
'tr',
|
|
'jp', // 日本
|
|
'kor', // 韩语
|
|
'de', // 德国
|
|
'it', // 意大利
|
|
'nl', // 芬兰
|
|
'pl', // 波兰
|
|
'pt', // 葡萄牙
|
|
'spa', // 西班牙
|
|
'swe', // 瑞典
|
|
'uk', // 乌克兰
|
|
'fin', // 芬兰
|
|
'fra', //法国
|
|
'zh-CN',
|
|
'zh-TW'
|
|
];
|
|
$str = '';
|
|
// if (empty($user_locale) || !in_array($user_locale, $suoxie) || empty($request->Cookie())) {
|
|
|
|
// //$user_locale = 'zh-CN';
|
|
// $user_locale = 'en';
|
|
// }
|
|
if (empty($user_locale) || !in_array($user_locale, $suoxie)) {
|
|
|
|
//$user_locale = 'zh-CN';
|
|
$user_locale = 'en';
|
|
}
|
|
if ($user_locale == 'cn') $user_locale = 'zh-CN';
|
|
if ($user_locale == 'tw') $user_locale = 'zh-TW';
|
|
|
|
$app_locale = App::getLocale();
|
|
|
|
// var_dump($app_locale);exit;
|
|
if ($app_locale !== $user_locale) {
|
|
App::setLocale($user_locale);
|
|
}
|
|
|
|
return $next($request);
|
|
}
|
|
}
|
|
|