切换laravel语种
思路:在laravel项目中,resources/lang/创建对应的文件包,以及对应的翻译文件,使用session来调用语种
在Kernel.php中引入:use Illuminate\Session\Middleware\StartSession,引入session.
1.执行中间件:
php artisan make:middleware SetLocale
在中间件SetLocale中设置如下:
use Illuminate\Support\Facades\App;
use Illuminate\Http\Request;
class SetLocale
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if ($request->session()->has('language') && in_array($request->session()->get('language'), ['zh_CN','en','zh_TW'])) {
App::setLocale($request->session()->get('language'));
} else {
App::setLocale('zh_CN');
}
return $next($request);
}
}
2.在kernel.php中 r o u t e M i d d l e w a r e 配 置 路 由 文 件 : routeMiddleware配置路由文件: routeMiddleware配置路由文件:routeMiddleware
'setLang'=>SetLocale::class,
同时在routes文件中配置如下:
Route::namespace('App\Http\Controllers\Api')->middleware(['allow','setLang'])->group(function (){})
3.resources/lang/文件名.php配置对应的文件包
4.设置对应的语种
$lang = $request->all();
App::setLocale($lang['lang']); //配置默认语言
$request->session()->put('language',$lang['lang']); //存到session
return App::getLocale();
4.这样就配置完成了,后端调用的时候就可以直接使用
trans(‘文件名.数组.变量’),直接调用对应的参数了