反思您的代码
顺便说一句,重要的是要注意,您永远不应该声明两条同名的路由.使用您的示例,这是具有3个名称的3条路由.
Route::get('/about', [Controller::class, 'aboutview'])->name('en.aboutview'); // EN
Route::get('/uber-uns', [Controller::class, 'aboutview'])->name('de.aboutview'); // DE
Route::get('/hakkimizda', [Controller::class, 'aboutview'])->name('tr.aboutview'); // TR
现在可以调用链接:
http://example.com/about
- EN route('en.aboutview')
http://example.com/uber-uns
- DE route('de.aboutview')
http://example.com/hakkimizda
- TR route('tr.aboutview')
解决方案#1
使用变量来检测语言.
How to can use parameters on Route?-劳拉维尔·doctor .
routes/web.php
Route::get('/{lang}/about', [Controller::class, 'aboutview'])->name('aboutview');
现在可以调用链接:
http://example.com/en/about
- EN route('aboutview', ['lang' => 'en'])
http://example.com/de/about
- DE route('aboutview', ['lang' => 'de'])
http://example.com/tr/about
- TR route('aboutview', ['lang' => 'tr'])
在你的aboutview()
上,函数可以使用$lang
变量,并且可以用当前语言返回响应.
解决方案2
您可以使用循环动态生成路由.对于色彩丰富的名称,需要使用本地化.
Laravel Localization-劳拉维尔·doctor .
routes/web.php
use Illuminate\Support\Facades\Lang;
// List of Languages
$languages = ['en', 'de', 'tr'];
// List of Routes (name => target)
$routes = [
"aboutview" => [Controller::class, 'aboutview']
];
foreach($languages => $language) {
foreach($routes as $name => $target) {
$nameOnLanguage = Lang::get("routes.${name}", [], $language); // get how to call current $name of route on current $language (from /lang/$language/routes.php file)
Route::get($nameOnLanguage, $target)->name("${language}.${name}"); // set route to /$nameOnLanguage url, can call it with route($language.$name) from Laravel
}
}
lang/en/routes.php
<?php
return [
"aboutview" => "about",
];
lang/de/routes.php
<?php
return [
"aboutview" => "uber-uns",
];
lang/tr/routes.php
<?php
return [
"aboutview" => "hakkimizda",
];
现在可以调用链接:
http://example.com/about
- EN route('en.aboutview')
http://example.com/uber-uns
- DE route('de.aboutview')
http://example.com/hakkimizda
- TR route('tr.aboutview')