我在使用Laravel5时遇到了一些问题。 我有多个域链接到单个应用程序,但每个域可以有多种语言。在为域选择不同的语言之前,不应显示区域设置字符串。
也许有人有这方面的经验。 等:
domain.com/home
domain.net
domain.lt/pagrindinis
domain.lt/en/home
答案 0 :(得分:1)
我终于找到了解决方案:
在app.php上我为位置制作了自定义数组:
'domains' => [
'domain_1' => [
'locales' => ['en', 'lt'],
'locale' => 'lt' // default locale for this domain
],
'domain_2' => [
'locales' => ['ru', 'en']
'locale' => 'ru',
],
];
和路线服务提供商。
/**
* Handle app requests
*
* @param Router $router
* @param Request $request
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function map(Router $router, Request $request)
{
$locale = $this->getLocaleByDomain($request);
$requestLocale = $request->segment(1);
$options = [
'namespace' => $this->namespace
];
if (in_array($requestLocale, Config::get('app.domains')[$request->getHost()]['locales'])) {
$locale = $requestLocale;
$options = array_merge(
$options,
[
'prefix' => $locale
]
);
}
app()->setLocale($locale);
$router->group($options, function ($router) {
require app_path('Http/routes.php');
});
}
/**
* Retrieve locale by domain
*
* @param $request
* @return mixed
*/
protected function getLocaleByDomain($request)
{
$locale = Config::get('app.fallback_locale');
if (array_key_exists($request->getHost(), Config::get('app.domains'))) {
$locale = Config::get('app.domains')[$request->getHost()]['locale'];
}
return $locale;
}
Routes.php文件包含:
$router->get(trans('routes.contacts'),
[
'as' => 'contacts',
'uses' => 'PagesController@contacts'
]
);
所以我得到的是多个域名,每种语言环境都有多种语言和相当不错的搜索引擎优化网址。也许任何人都可以提出其他想法?