Laravel - 语言环境可选地作为 URL 中的第一个参数

Laravel - locale optionally as first parameter in the URL

我更多来自香草 PHP 背景,但我开始进入 Laravel(和 Lumen)。我正在从事一个国际化的项目,并将 URL 结构放在一起。

我是 Apple 示例的粉丝,即 apple.com/mac 为您提供 Apple 美国网站上的 Mac 产品。 apple.com/uk/mac 为您提供 Apple 英国网站上的 Mac 产品(即 apple.com/{locale/?}route

是否可以使用 Laravel 复制此行为:

  1. 第一个参数是我们已知的语言环境
  2. 如果是,请设置语言环境并继续
  3. 如果不匹配,参数是否匹配我们注册的路由之一并继续

我看到一些 类似 问题的答案说语言环境作为可选参数 1 是不可能的,因为那时 "the router will not know what to do",但确实有-生活中的例子,A​​pple 就是我给出的例子(在我从事的一些香草项目中也是如此)。

请问有什么建议吗?

因此,轻松解决此问题的方法是使用提到的 the package @BlackXero。

$localiseGroup = [
    'prefix' => LaravelLocalization::setLocale(),
    'middleware' => ['localeSessionRedirect', 'localizationRedirect',]
];

Route::group($localiseGroup, function() {

    Route::get('/mac', '<handler>');

});

// domain.com/mac and domain.com/es/mac would now work

如果您 read the docs,您将看到所有设置说明以使其按预期工作。