我有一个拉拉维尔项目,我必须改变语言系统,但它应该与子域有关。
例如:
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/