2015-06-19 63 views
1

我有一些Laravel5的問題。 我有多個鏈接到單個應用程序的域,但每個域可以有多種語言。區域設置字符串不應出現,直到爲域選擇不同的語言。Laravel5多語言域名

也許有人有這方面的經驗。 等:

domain.com/home 
domain.net 
domain.lt/pagrindinis 
domain.lt/en/home 

回答

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文件文件包含:

所以我達到的多個域,多語言和相當不錯的搜索引擎優化的URL的各個地區。也許任何人都可以提出其他想法?