laravel框架实现中英文双语站
主要思路
添加一个修改默认语言的中间件,根据session中的locale的值,来实现中英文的切换
主要实现流程
添加判断session的中间件
用artisan命令行在网站入口文件同级目录创建中间件
php artisan make:middleware SetLocale
打开app/Http/Middleware/SetLocale.php修改handle方法
public function handle($request, Closure $next){if (Session::has(\'locale\') && in_array(Session::get(\'locale\'), [\'en\', \'zh\'])) {App::setLocale(Session::get(\'locale\'));// dd(App::getLocale());} else {App::setLocale(\'zh-CN\');}return $next($request);}
在app/Http/Kernel.php文件中注册中间件
protected $routeMiddleware = [...\'setLocale\' => SetLocale::class,];
在app/Http/HomeController.php中创建changeLocale方法
public function changeLocale($locale){if (in_array($locale, [\'en\',\'zh-CN\'])) {session()->put(\'locale\', $locale);}return redirect()->back()->withInput();}
在routes/web.php中,创建切换中英文的路由
Route::get(\'/changeLocale/{locale}\', \'HomeController@changeLocale\');
将切换语言 的中间件添加到所有需要切换语言的路由外层
Route::group([\'middleware\' => [\'setLocale\']], function() {//切换语言Route::get(\'/changeLocale/{locale}\', \'HomeController@changeLocale\');...});
在模板中设置切换语言的标签
<a href=\"{{ url(\'/changeLocale/zh-CN\') }}\" class=\"lang-ex\" lang=\"zh-cn\" >中</a>/<a href=\"{{ url(\'/changeLocale/en\') }}\" class=\"lang-ex\" lang=\"en\" >en</a>
在resources/lang中添加语言包,例如英文,创建en/auth.php文件,将中英文对应的翻译写入auth.php文件
return [//首页\'Home\' => \'Home\',\'website\' => \'website\',]
中文zh-CN/auth.php对应的配置
return [//首页\'Home\' => \'主页\',\'website\' => \'官网\',]
在模板中应用
<h4>{{trans(\'auth.Home\')}}</h4>
中英文效果
原帖参考地址
参考地址1
参考地址2