benconstable/laravel-localize-middleware

为您的 Laravel >=5.1 应用程序配置化的本地化中间件

v1.2.1 2017-06-04 17:27 UTC

This package is not auto-updated.

Last update: 2024-09-13 16:38:09 UTC


README

为您的 Laravel >=5.1 应用程序配置化的本地化中间件。

Build Status Latest Stable Version License

此包提供了一组简单的配置和中间件,允许您通过当前请求自动设置应用程序的区域。您可以从请求参数、头部、当前主机、Cookie 或会话数据中设置区域。

安装

使用 Composer 安装此包

$ composer require benconstable/laravel-localize-middleware

接下来,将包的提供者添加到您的 config/app.php

// config/app.php

'providers' => [
    BenConstable\Localize\LocalizeServiceProvider::class
]

然后您只需要发布包的配置

$ php artisan vendor:publish --provider="BenConstable\Localize\LocalizeServiceProvider"

这将创建 config/localize-middleware.php

使用方法

默认情况下,该包配置为使用名为 locale 的请求参数来设置应用程序的区域(有关更多信息,请参阅下一节)。要启用此功能,只需在您的 app/Http/Kernel.php 类中 注册提供的中间件

// app/Http/Kernel.php

protected $middleware = [
    \BenConstable\Localize\Http\Middleware\Localize::class
];

建议全局且尽早设置此中间件,但您可以根据需要以任何方式注册它。

配置

配置文件位于 config/localize-middleware.php。从那里,您可以为您的应用程序配置您想要使用的本地化确定器,并为其设置选项。您只需更改 driver 选项。

以下列出了可用的确定器。

从请求参数中确定区域

驱动器名称: parameter

默认确定器从名为 locale 的请求参数中设置应用程序的区域。您可以使用 parameter 配置选项更改此设置。

该参数将在查询字符串或请求体中找到。

从请求头部中确定区域

驱动器名称: header

此确定器从请求头部中设置应用程序的区域,默认为 Accept-Language。您可以使用 header 配置选项更改此设置。

另外:有关使用 Accept-Language 确定区域的信息,请参阅 W3C 的此信息

使用当前主机确定区域

驱动器名称: host

此确定器根据当前主机设置不同的应用程序区域。您需要使用 hosts 配置选项设置应用程序区域到主机的映射。

从 Cookie 中确定区域

驱动器名称: cookie

此确定器从名为 locale 的 Cookie 中设置应用程序的区域。您可以使用 cookie 配置选项更改此设置。

从会话中确定区域

驱动器名称: session

此确定器从名为 locale 的会话值中设置应用程序的区域。您可以使用 session 配置选项更改此设置。

使用多个确定器

有时可能需要从多个来源尝试确定区域。如果您想这样做,只需将 driver 配置选项设置为其他驱动器名称的数组。例如

'driver' => [
    'cookie',
    'parameter'
]

然后区域将从第一个提供成功匹配的确定器中确定,因此请确保您按正确的顺序添加驱动器(数组中最先的将被使用)。

在中间件外部确定地区

如果您不想使用提供的中间件,您可以自己编写,或者完全避免使用中间件。

要在自己的代码中确定地区,首先为提供的门面注册一个别名(如果需要注入,实际上是一个对BenConstable\Localize\DeterminerManager的引用)。

// config/app.php

'aliases' => [
    'Localizer' => BenConstable\Localize\DeterminerFacade::class
]

然后,您可以直接这样做

$locale = Localizer::determineLocale($request);

来确定地区,并对它进行您想做的事情。

贡献

请参阅CONTRIBUTING.md

其他本地化项目

以下是一些可能对您有用的其他Laravel本地化项目

许可证

MIT © Ben Constable 2017。有关更多信息,请参阅LICENSE