aw-studio / localize
Fjord 前端翻译路由
v0.3
2020-06-12 11:51 UTC
This package is auto-updated.
Last update: 2024-09-12 21:21:42 UTC
README
以 /en/home
、/de/startseite
的形式轻松构建翻译路由。
安装
composer require aw-studio/localize
使用方法
请确保在 resources
目录中的翻译文件内翻译您的路由,例如:
// lang/de/routes.php return [ 'home' => 'startseite' ];
现在您可以简单地将翻译路由添加到您喜欢的路由文件中,例如 routes\web.php
Route::trans('/__(routes.home)', HomeController::class)->name('home');
Blade 中的翻译路由
在您的 blade 文件中,只需像这样使用 __route()
辅助函数
<a href="{{ __route('home') }}"> ... </a>
切换语言
使用 __routes()
辅助函数来检索当前路由所有语言版本的路由数组。如果您的路由使用翻译参数,则需要传递这些参数。
@foreach (__routes($routeParameters ?? null) as $route) <a href="{{ $route->link }}"> {{ $route->locale }} </a> @endforeach
翻译路由参数
想象一下您的路由接受一个翻译的 slug 作为参数,例如一篇文章
/en/posts/my-first-post
/de/beitraege/mein-erster-beitrag
您的路由应该看起来像这样
Route::trans('/__(routes.posts)/{slug}', PostController::class)->name('posts.show');
在您的控制器中,您可以使用 whereHas
方法检索文章
$post = Post::whereHas('translations', function($query) use($slug) { $query->where('slug', $slug)->where('locale', app()->getLocale()); }) ->with('translations') ->first();
为了检索文章指向所有其他语言的链接,我们需要像这样传递翻译的路由参数
$slugs = $post->translations->mapWithKeys(function($item) { return [$item->locale => $item->slug]; })->toArray(); return view('posts.show')->with([ 'post' => $post, 'routeParameters' => ['slug' => $slugs] ]);
在您的视图中,现在您可以使用 __routes()
函数,传递相关参数
@foreach (__routes($routeParameters ?? null) as $route) {{ $route->link }} @endforeach