aw-studio/laravel-translatable-routes

dev-main 2021-10-05 14:38 UTC

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配置中定义的所有语言创建翻译路由。语言将被添加到给定的uriname前。因此,前一个示例中的路由将是

  • 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];
	}
}