dongrim / laravel-localization
为 Laravel 提供简单的本地化
v1.0.1
2022-07-11 12:24 UTC
Requires
- php: >=7.4.0
- laravel/framework: ~6.0||^7.0||^8.0||^9.0
Requires (Dev)
- laravel/legacy-factories: 1.x
- laravel/pint: ^0.2.3
- orchestra/testbench: ^6.24
- phpunit/phpunit: 9.5.*
This package is auto-updated.
Last update: 2024-09-11 17:30:51 UTC
README
为 Laravel 提供简单的 i18n 本地化。
该软件包提供以下功能
- 从浏览器检测语言
- 智能重定向(将区域设置保存到会话中)
- 智能路由(只定义一次路由,无论使用多少种语言)
- 可选隐藏 URL 中的默认区域设置
目录
Laravel 兼容性
安装
通过 composer 安装软件包: composer require dongrim/laravel-localization
配置文件
为了编辑默认配置,您可以执行
php artisan vendor:publish --provider="Dongrim\LaravelLocalization\LaravelLocalizationServiceProvider"
之后,将创建 config/localization.php
。
配置选项如下
- useAcceptLanguageHeader 如果为真,则自动从浏览器检测语言。
- hideDefaultLocaleInURL 如果为真,则不在 URL 中显示默认区域设置。
- driver 支持两种驱动程序来访问区域设置的列表(默认:配置文件)
- 配置文件 config/localization.php
- 数据库
- supportedLocales 应用程序的语言(默认:英语 & 西班牙语)。
- localesMapping 重命名 URL 区域设置。
注册中间件
您可以在 app/Http/Kernel.php
文件中注册软件包中间件
<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { /** * The application's route middleware. * * @var array */ protected $routeMiddleware = [ /**** OTHER MIDDLEWARE ****/ 'localize' => \Dongrim\LaravelLocalization\Middleware\LocalizationMiddleware::class, ]; }
使用
将以下内容添加到您的路由文件中
// routes/web.php Route::group([ 'prefix' => Localization::prefix(), 'middleware'=>['localize'] ], function(){ /** ADD ALL LOCALIZED ROUTES INSIDE THIS GROUP **/ Route::get('/', function(){ return View::make('welcome'); })->name('welcome'); Route::get('test',function(){ return View::make('test'); })->name('test'); }); /** OTHER PAGES THAT SHOULD NOT BE LOCALIZED **/
本地化数据库
如果您想从数据库中获取区域设置列表,请更改 config/localization.php 。
- 指定驱动程序
- 设置模型命名空间
- 设置区域键。然后在负责此列表的模型中
- trait Dongrim\LaravelLocalization\Traits\Localizable
例如
namespace App\Models; use Illuminate\Database\Eloquent\Model; use Dongrim\LaravelLocalization\Traits\Localizable; use Dongrim\LaravelLocalization\Contracts\Localization as LocalizationContract; class Localization extends Model implements LocalizationContract { use Localizable; }
推荐
使用命名路由以更轻松地访问 URL 本地化。
<a href="route('welcome')">Welcome</a>
<a href="route('test')">Test</a>
除了默认区域设置之外的语言将自动添加到 URL 中
// when current locale en and default locale en
http://site.com/
http://site.com/test
// when current locale es and default locale en
http://site.com/es
http://site.com/es/test
辅助工具
此软件包包含辅助工具。
区域设置集合
所有可用区域设置的列表
<ul>
@foreach(locales() as $locale)
{{ $locale }}
@endforeach
</ul>
默认区域设置
当您设置 useAcceptLanguageHeader = true 时,要查找默认语言,您需要使用
@dump(default_locale())
缓存路由
要缓存您的路由,请使用
php artisan route:clear