Laravel多语言支持

如果要支持多语言i18n,可以使用laravel-lang这个包,操作如下:

php artisan lang:publish 
composer require laravel-lang/common
php artisan lang:update
php artisan lang:add zh_CN

翻译文件在lang文件夹下

Laravel多语言文夹

如果要支持多语言切换,可以通过中间件实现:

php artisan make:middleware LanguageMiddleware

填写以下代码:

public function handle(Request $request, Closure $next): Response
{
	if(session()->has('locale'))
		app()->setLocale(session('locale'));
	else
		app()->setLocale(config('app.locale'));
	return $next($request);
}

HomeController中

public function setLocale($locale)
{
	session(['locale' => $locale]);
	return redirect()->back();
}

路由:

Route::get('/setLocale/{locale}', [HomeController::class, 'setLocale'])->name('home.setLocale');

视图:

<ul class="menu">
	<li><a href="{{ route('home.setLocale', ['locale'=>'zh_CN']) }}"><h3>简体中文</h3></a></li>
	<li><a href="{{ route('home.setLocale', ['locale'=>'en']) }}"><h3>English</h3></a></li>
</ul>

文本的翻译用法:

{{ __('iretailer.sign_out') }}

这句话的意思是在iretailer.php文件中找sign_out这个配置。当然,不要忘了在不同的语言文件夹中iretailer.php这个文件。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注