Laravel使用子域更改语言


Laravel change language with subdomain

我有一个拉拉维尔项目,我必须改变语言系统,但它应该与子域有关。

例如:

http://en.site.com/portal

http://de.site.com/portal

我使用此命令获取诸如"trans("home.title")"之类的语言文本,我也有一个中间件来更改语言,例如:

    if($lang = Session::get('lang')){
      Lang::setLocale($lang);
    }
   return $next($request);

我想路由决定从子域名到语言。我该怎么做?我就是可以这样做

Route:get("/lang/{lang}","LanguageController@change");

子域应该如何?

谢谢你,如果你帮助我.

您只需要 1 个中间件即可。在拉拉维尔实现这一目标非常简单。

<?php
namespace AppHttpMiddleware;
use Closure;
use IlluminateSupportFacadesApp;
class LangMiddleware
{
    public function handle($request, Closure $next)
    {
        $url_array = explode('.', parse_url($request->url(), PHP_URL_HOST));
        $subdomain = $url_array[0];
        $languages = ['en', 'de'];
        if (in_array($subdomain, $languages)) {
            App::setLocale($subdomain);
        }
        return $next($request);
    }
}

然后将中间件添加到内核中.php

确保在资源/语言中具有所需的子域文件夹

我在这里找到了解决方案:https://kovah.me/en/laravel-5-localization-based-on-the-subdomain/