2017-02-24 5 views
0

Für SEO-Zwecke würde ich gerne das Gebietsschema meiner Laravel-Projektseiten in die URL aufnehmen, z. B. http://localhost/en oder http://localhost/nl/about.Mehrsprachige Seite in Laravel 5.4

In dem Versuch, dies zu erreichen, habe ich ein paar Tutorials und Pakete gefunden, aber ich bin nicht ganz glücklich mit ihnen. Der beliebteste Vorschlag ist das Laravelokalisierungspaket von Mcamara, aber das Erstellen von URLs erfordert einen sehr langen Funktionsaufruf. Andere Pakete sind entweder für ältere Laravel-Versionen oder bieten eine Menge an Funktionalität, die ich nicht brauche, was meinen Code und meine Datenbank nur überladen würde.

Marwelln's tutorial scheint perfekt: es ändert URLs wie ich will, arbeitet mit den Standard-URL-Helfer wie action(), url() und route() und erstellt keine unnötigen Datenbanktabellen. Dieses Tutorial scheint jedoch für Laravel 5.0 zu sein und nicht mit Laravel 5.4 kompatibel zu sein. Könnte mir jemand auf die einfachste Weise helfen, eine solche URL-Änderung in der neuesten Laravel-Version zu erreichen?

+0

Ich suche nach dem gleichen, wenn Sie das Projekt teilen möchten. –

Antwort

0

Versuchen Sie Folgendes:

In Ihrem RouteServiceProvider.php fügen Sie diese Zeilen am beginnig der Karte() -Methode:

$locale = $request->segment(1); 
    if($locale) { 
     $this->app->setLocale($locale); 
     $this->prefix = $locale; 
    } 

Und die mapWebRoutes() Methode sollte wie folgt aussehen:

protected function mapWebRoutes() 
{ 
    $parameters = [ 
     'middleware' => 'web', 
     'namespace' => $this->namespace, 
    ]; 
    if ($this->prefix) { 
     $parameters['prefix'] = $this->prefix; 
    } 

    Route::group($parameters, function ($router) { 
     require base_path('routes/web.php'); 
    }); 
} 

Dann folgen Sie den anderen Anweisungen im Link des von Ihnen bereitgestellten Beispiels. Ich denke, das sollte alles sein.

HINWEIS: die Zeile $ this-> app-> setLocale ($ locale) hat nicht viel Sinn, da Sie das auf der Middleware tun.