benconstable / laravel-localize-middleware
为您的 Laravel >=5.1 应用程序配置化的本地化中间件
Requires
- php: >=5.5.9
- laravel/framework: ~5.1
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.8
- squizlabs/php_codesniffer: ~2.0
This package is not auto-updated.
Last update: 2024-09-13 16:38:09 UTC
README
为您的 Laravel >=5.1 应用程序配置化的本地化中间件。
此包提供了一组简单的配置和中间件,允许您通过当前请求自动设置应用程序的区域。您可以从请求参数、头部、当前主机、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。