我有一个laravel项目,我必须改变语言系统,但它应该是与子域。
例如:
我使用这个命令来获得像"trans("home.title")“这样的语言文本,我也有一个中间件来改变语言,比如:
if($lang = Session::get('lang')){
Lang::setLocale($lang);
}
return $next($request);我想从子域名决定语言的路由。我该怎么做呢?我就是可以这样做
Route:get("/lang/{lang}","LanguageController@change");子域名应该是怎样的?
如果你能帮我,谢谢你。
发布于 2018-11-17 20:44:57
你只需要一个中间件,仅此而已。在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中
确保您在resource/lang中有所需子域的文件夹
我在这里找到了解决方案:https://kovah.me/en/laravel-5-localization-based-on-the-subdomain/
https://stackoverflow.com/questions/36846722
复制相似问题