AI智能
改变未来

Laravel框架实现中英文双语站


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

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Laravel框架实现中英文双语站