我有一个laravel项目,我必须更改语言系统,但它应该是子域名。
例如:
我使用此命令获取语言文本,如" trans(" home.title")"我也有一个中间件来改变语言,如:
if($lang = Session::get('lang')){
Lang::setLocale($lang);
}
return $next($request);
我想路由以决定从子域名中使用语言。我怎样才能做到这一点?我可以这样做
Route:get("/lang/{lang}","LanguageController@change");
子域名应该如何?
谢谢你帮助我。
答案 0 :(得分:1)
您只需要1个中间件,仅此而已。在Laravel中实现此目标非常简单。
<?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);
}
}
然后将中间件添加到Kernel.php
确保在资源/语言中具有用于子域的文件夹
我在这里找到了解决方法:https://kovah.me/en/laravel-5-localization-based-on-the-subdomain/