在 Laravel 中实现多语言支持主要涉及到以下几个步骤:
首先,你需要安装 Laravel 的本地化组件。Laravel 默认支持多种语言,你可以根据需要添加更多语言。要添加新的语言包,你可以使用 Composer 的 require 命令:
composer require overtrue/laravel-lang --dev
接下来,你需要配置 config/app.php 文件中的 locale 和 fallback_locale 选项。locale 是你的应用程序的默认语言,而 fallback_locale 是当请求的语言不存在时使用的备用语言。
'locale' => 'en',
'fallback_locale' => 'en',
在 resources/lang 目录下,你会找到一个名为 en 的文件夹,其中包含了英文的语言文件。要添加新的语言文件,只需在 resources/lang 目录下创建一个新的文件夹,命名为你想要的语言代码(例如 zh-CN),然后在该文件夹中创建一个名为 messages.php 的文件。
在 messages.php 文件中,你可以定义你的翻译字符串。例如:
<?php
return [
'welcome' => '欢迎来到我们的网站!',
'message' => '这是一条消息。',
];
要在你的应用程序中使用翻译字符串,你可以使用 trans 函数或 __ 函数。例如:
echo trans('messages.welcome');
// 或者
echo __('messages.welcome');
你还可以在视图中使用 @lang 指令:
{{-- resources/views/welcome.blade.php --}}
<h1>@lang('messages.welcome')</h1>
要在运行时切换语言,你可以使用 app()->setLocale() 方法。例如:
app()->setLocale('zh-CN');
你还可以使用中间件来根据用户的浏览器设置自动切换语言。首先,创建一个新的中间件:
php artisan make:middleware SetLocale
然后,在 app/Http/Middleware/SetLocale.php 文件中,修改 handle 方法:
public function handle($request, Closure $next)
{
$locale = $request->segment(1);
if (in_array($locale, config('app.locales'))) {
app()->setLocale($locale);
}
return $next($request);
}
最后,在 app/Http/Kernel.php 文件中将新创建的中间件添加到全局中间件数组中:
protected $middleware = [
// ...
\App\Http\Middleware\SetLocale::class,
];
现在,你的应用程序将支持多语言,并根据用户的浏览器设置自动切换语言。