chinleung / laravel-multilingual-routes
一个用于注册多语言路由的包。
Requires
- php: ^8.1
- chinleung/laravel-locales: ^2.0
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^9.5.10|^10.5
- dev-master
- v4.x-dev
- v4.1.1
- v4.1.0
- v4.0.1
- v4.0.0
- v3.x-dev
- v3.0.1
- v3
- v2.x-dev
- v2.8.2
- v2.8.1
- v2.8.0
- v2.7.5
- v2.7.4
- v2.7.3
- v2.7.2
- v2.7.1
- v2.7.0
- v2.6.0
- v2.5.1
- v2.5.0
- v2.4.1
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.0
- v2.0.1
- v2.0.0
- v1.x-dev
- v1.10.0
- v1.9.0
- v1.8.1
- v1.8.0
- v1.7.1
- v1.7.0
- v1.6.0
- v1.5.3
- v1.5.2
- v1.5.1
- v1.5.0
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.0
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.2
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2024-08-27 16:40:05 UTC
README
为您的应用程序注册多语言路由的包。
版本控制
安装
您可以通过 composer 安装此包
composer require chinleung/laravel-multilingual-routes
要自动检测并更改应用程序的本地化,您可以将中间件添加到您的 app/Http/Kernel
。它必须是 web
中间件组中的第一个项目。
protected $middlewareGroups = [ 'web' => [ \ChinLeung\MultilingualRoutes\DetectRequestLocale::class, // ... ] ];
配置
默认情况下,应用程序的本地化只包括 en
,默认本地化没有前缀。如果您想为默认本地化添加前缀,请运行以下命令以发布配置文件
php artisan vendor:publish --provider="ChinLeung\MultilingualRoutes\MultilingualRoutesServiceProvider" --tag="config"
如果您的应用程序支持不同的本地化,您可以选择设置 app.locales
配置或遵循来自 chinleung/laravel-locales 的配置说明。
示例
而不是这样做
Route::get('/', 'ShowHomeController')->name('en.home'); Route::get('/fr', 'ShowHomeController')->name('fr.home');
您可以使用以下方法达到相同的结果
Route::multilingual('/', 'ShowHomeController')->name('home');
已设置一个 演示仓库,以展示该包的基本用法。
使用方法
快速使用
一旦您已配置了本地化,您就可以开始在您的 routes/web.php
中添加如下示例中的路由
Route::multilingual('test', 'TestController');
这将生成以下内容
注意 URI
列是从位于 resources/lang/{locale}/routes.php
的翻译文件中生成的,其中包含类似以下的路由键
<?php // resources/lang/fr/routes.php return [ 'test' => 'teste' ];
要获取路由,您可以使用 localized_route(string $name, array $parameters, string $locale = null, bool $absolute = true)
而不是使用 route
辅助函数
localized_route('test'); // Returns the url of the current application locale localized_route('test', [], 'fr'); // Returns https://app.test/fr/teste localized_route('test', [], 'en'); // Returns https://app.test/test
要获取其他本地化的当前路由,您可以使用 current_route(string $locale = null)
辅助函数
current_route(); // Returns the current request's route current_route('fr'); // Returns the current request's route in French version current_route('fr', route('fallback')); // Returns the fallback route if the current route is not registered in French
重命名路由
Route::multilingual('test', 'TestController')->name('foo');
根据本地化重命名路由
Route::multilingual('test', 'TestController')->names([ 'en' => 'foo', 'fr' => 'bar', ]);
跳过本地化
Route::multilingual('test', 'TestController')->except(['fr']);
限制为本地化列表
Route::multilingual('test', 'TestController')->only(['fr']);
更改请求方法
Route::multilingual('test', 'TestController')->method('post');
注册视图路由
// Loads test.blade.php Route::multilingual('test');
使用不同键注册视图路由和路由
// Loads welcome.blade.php instead of test.blade.php Route::multilingual('test')->view('welcome');
传递数据到视图
Route::multilingual('test')->data(['name' => 'Taylor']); Route::multilingual('test')->view('welcome', ['name' => 'Taylor']);
重定向本地化路由
Route::multilingual('support'); Route::multilingual('contact')->redirect('support');
检查本地化路由
Request::localizedRouteIs('home');
签名本地化路由
URL::signedLocalizedRoute('unsubscribe', ['user' => 1]); URL::temporarySignedLocalizedRoute('unsubscribe', now()->addMinutes(30), ['user' => 1]);
从 1.x 升级到 2.x
要从 1.x 升级到 2.x,您只需将应用程序中的 LaravelMultilingualRoutes
命名空间更改重命名为 MultilingualRoutes
即可。最常见的情况是将 DetectRequestLocale
中间件中的命名空间更改。
测试
composer test
贡献
有关详细信息,请参阅 CONTRIBUTING
安全
如果您发现任何安全相关的问题,请通过电子邮件 hello@chinleung.com 而不是使用问题跟踪器。
鸣谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件
Laravel 包模板
此包是使用 Laravel 包模板 生成的。