2015-06-19 3 views
1

У меня есть некоторые проблемы с Laravel5. У меня есть несколько доменов, связанных с одним приложением, но каждый домен может иметь несколько языков. Строка Locale не должна появляться до тех пор, пока для домена не будет выбран другой язык.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 файл содержит:

Так что я достиг в нескольких доменов, с несколькими языками и очень хорошим SEO URL для каждого языка. Может быть, кто-нибудь может сделать некоторые другие идеи?

Смежные вопросы