laravel构建多语言系统
多语言切换
config/app.php 中 locale 中默认为‘en’
'locale' => 'zh_CN',
建立LanguageController
namespace App\Http\Controllers; class LanguageController extends Controller { public function setlocale() { $lang = session('language'); if ($lang == 'zh_CN') { session(['language' => 'en']); } else { session(['language' => 'zh_CN']); } return view('lang'); } }
添加路由
Route::get('lang', 'LanguageController@setlocale')->name('lang');
建立Language中间件
namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\App; class Language { public function handle($request, Closure $next) { if (session()->has('language')) { App::setLocale(session('language')); } else { session(['language' => App::getLocale()]); } return $next($request); } }
将Language中间件添加到中间件组中
namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { protected $middleware = [ .... ]; protected $middlewareGroups = [ 'web' => [ ... \App\Http\Middleware\Language::class ], 'api' => [ ... ], ]; protected $routeMiddleware = [ .... ]; }
这样访问任何路由都会执行Language中间件中handle()的内容
resources/lang目录下比照en文件夹建立对应的语言包,blade页面访问使用 {{__('en文件夹下文件名.key名称')}}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix