在我的项目中有4种语言.如何根据用户 Select 的语言更改URL链接? 例如;

#EN
Route::get('/about', [Controller::class, 'aboutview'])->name('aboutview');

#DE
Route::get('/uber-uns', [Controller::class, 'aboutview'])->name('aboutview');

#TR
Route::get('/hakkimizda', [Controller::class, 'aboutview'])->name('aboutview');

推荐答案

反思您的代码

顺便说一句,重要的是要注意,您永远不应该声明两条同名的路由.使用您的示例,这是具有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')

Laravel相关问答推荐

使用MAATWebSite/EXCEL导入Exel时,不会创建Laravel模型

vagrant会损坏你的电脑. | macOS v12(蒙特雷)#13132

使用 Eloquent 的 Laravel 块方法

如何在 Laravel 4 中使用没有 id 的 Eloquent 更新数据

使用 Laravel 限制多态多对多关系中的相关记录

如何从 laravel 控制器执行外部 shell 命令?

Laravel 5.5 类型错误:传递给 Illuminate\Auth\EloquentUserProvider::validateCredentials() 的参数 1 必须是实例

Laravel Input:all() 忽略禁用的输入

如何在中间件 Laravel 中获取请求的控制器和操作的名称

如何更改 ember-cli 中的 dist 文件夹路径?

Laravel Eloquent:计算总价的最佳方法

如何仅在Blade模板存在时才包含它?

在共享主机中仅使用 FTP 部署 Laravel 5

如何处理 php (Laravel api) 和 javascript (AngularJS) 之间的日期时间

Laravel Eloquent ORM 复制

如何在laravel 5.1中使用url(路由)传递多个参数

在 laravel 中删除排队的作业(job)

Laravel homestead IP地址不起作用

如何使 Laravel (Blade) 文本字段只读

php artisan migrate - SQLSTATE [HY000] [1045] 用户'laravel'@'localhost'的访问被拒绝