aw-studio / laravel-translatable-routes
dev-main
2021-10-05 14:38 UTC
Requires
- php: ^8.0
- illuminate/console: ^8.0
- illuminate/database: ^8.0
- illuminate/support: ^8
Requires (Dev)
- illuminate/testing: ^8.0
- mockery/mockery: ^1.4
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.4
This package is auto-updated.
Last update: 2024-09-05 21:13:52 UTC
README
一个用于在laravel中创建和管理可翻译路由的包。
设置
通过composer安装此包
composer require aw-studio/laravel-translatable-routes
用法
轻松构建形式为/en/home
、/de/startseite
的翻译路由。
请确保在resources
目录中的翻译文件内翻译您的路由,例如
// lang/de/routes.php return [ 'home' => 'startseite' ];
现在您可以简单地使用__()
辅助函数在uri字符串中添加翻译路由,如下所示
Route::trans('/__(routes.home)', 'HomeController@show')->name('home');
将为在您的translatable
配置中定义的所有语言创建翻译路由。语言将被添加到给定的uri和name前。因此,前一个示例中的路由将是
en.home
>/en/home
de.home
>/de/startseite
__route
辅助函数将当前语言添加到给定的名称,并返回相应的路由
<a href="{{ __route('home') }}"> ... </a>
切换语言
您可能想在网站上放置不同语言路由的链接。为此,可以使用期望的语言对当前路由应用translate
方法。
<a href="{{ Request::route()->translate('de') }}">Deutsch</a>
带有参数
对于带有参数的路由,必须指定一个翻译器。翻译器是一个控制器方法,它返回期望语言的路由参数。翻译器方法接收期望的语言和当前语言的参数。
// ./routes/web.php Route::trans('/{slug}', 'PostController@show')->translator('getSlug')->name('home'); // ./app/Http/Controllers/PostController.php class PostController extends Controller { // ... public function getSlug($locale, $slug) { $slug = Post::whereTranslation('slug', $slug) ->first() ->translate($locale) ->slug; return ['slug' => $slug]; } }