返回

Laravel 11 多语言支持:利用 mcamara/laravel-localization 简化配置

php

于 Laravel 11 中实现多语言支持:使用 mcamara/laravel-localization

多语言支持是现代 Web 应用程序不可或缺的一部分,它使你能够吸引来自不同地区和语言背景的用户。在这篇文章中,我们将深入探讨如何于 Laravel 11 中安装和配置 mcamara/laravel-localization 封装,以轻松实现多语言支持。

安装 mcamara/laravel-localization

步骤 1:通过 Composer 安装

composer require mcamara/laravel-localization

步骤 2:服务提供程序

Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider 添加到 app/config.phpproviders 数组中:

'providers' => [
    // ...
    Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider::class,
    // ...
],

步骤 3:别名中间件

将以下别名中间件添加到 app/config.phpaliases 数组中:

'aliases' => [
    // ...
    'Localize' => Mcamara\LaravelLocalization\Facades\LaravelLocalization::class,
    // ...
],

注册中间件

步骤 4:路由中间件

app/Http/Kernel.php$middleware$middlewareGroups 属性中注册中间件:

protected $middleware = [
    // ...
    \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRoutes::class,
    // ...
];

protected $middlewareGroups = [
    // ...
    'web' => [
        // ...
        \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter::class,
        // ...
    ],
    // ...
];

配置文件

步骤 5:配置

config/laravellocalization.php 配置文件复制到你的应用程序的 config 目录中,并根据需要对其进行自定义。

语言视图路径

步骤 6:视图路径

resources/views 目录中创建语言文件夹。例如,若要创建法语视图,可创建 resources/views/fr 目录。

本地化视图

步骤 7:本地化

在语言视图文件夹中创建 blade 文件,并使用 @lang 指令输出本地化字符串。

<!-- resources/views/fr/home.blade.php -->
<h1>@lang('home.title')</h1>

使用代码进行本地化

步骤 8:控制器中的本地化

在你的控制器中使用以下代码进行本地化:

use Mcamara\LaravelLocalization\Facades\LaravelLocalization;

public function index()
{
    $locale = LaravelLocalization::getCurrentLocale();
    
    return view('fr.home');
}

结论

mcamara/laravel-localization 是一个功能强大的封装,可简化 Laravel 应用程序的多语言支持。通过遵循本文中的步骤,你可以轻松配置你的应用程序以支持多种语言,从而提升用户体验并扩大应用程序的受众范围。

常见问题解答

1. 如何确定当前语言?

使用 Mcamara\LaravelLocalization\Facades\LaravelLocalization::getCurrentLocale() 获取当前语言。

2. 如何动态切换语言?

使用 Localize::setLocale() 设置语言。例如:

Localize::setLocale('fr');

3. 如何获取所有支持的语言列表?

使用 Mcamara\LaravelLocalization\Facades\LaravelLocalization::getSupportedLocales() 获取所有支持的语言列表。

4. 如何为路由组设置默认语言?

在路由组中使用 LaravelLocalization::setRoutePrefix('fr') 设置默认语言。

5. 如何处理 SEO?

mcamara/laravel-localization 支持 hreflang 标记,有助于 SEO。启用它并根据需要进行配置。