我有一个多语言网站:en、hu、ro atm。基本 URL 是example.com/{locale}
例如example.com/en
。语言检测只是检查locale
路由的参数。我希望它保持这种状态。
我有一个语言选择器,可以在其中选择所有语言环境,并且对于每个页面,我都有供爬虫使用的 link rel alternative,以避免出现重复内容问题。因此,当我访问example.com/en/products/1
布局中的语言选择器时,也应该有 和example.com/hu/products/1
。example.com/ro/products/1
我认为我应该在语言中间件中创建这些 URI,然后使用 将其发送到布局View::share
。
我可以使用当前 URI 和第一个段上的简单 preg 替换或 str 替换来构建这些 URI,但我猜 Laravel 中有更好的方法。我发现这\Illuminate\Support\Facades\Request::segment(1)
很适合获取第一个段,并且路由模式通常/{locale}/sthg/{sthg}
附加查询字符串,但我找不到用于替换第一个段的 Laravel 解决方案。有这样的事吗?
假设您有一个控制器来处理您的语言环境的更改:
如果您想要构建所有语言选项并将它们传递给您的视图,则可以使用视图编辑器: