Ellrion
2/12/2015 - 7:01 AM

laravel localosation

laravel localosation old (<=5.0)

<?php
//...

Route::group(['prefix' => App::make('langDetector')->getLangSlug(), 'before' => 'l10n'], function () {
    //...
});
<?php
//...

Route::filter('l10n', function () {
    if (is_null(App::make('langDetector')->getLangSlug())) {
        return Redirect::to(App::make('langDetector')->getLangRequestUri());
    }
    App::make('langDetector')->setLang();
});
<?php
use Illuminate\Support\ServiceProvider;

class LanguageDetectorServiceProvider
extends ServiceProvider
{

    public function register()
    {
        $this->app->singleton('langDetector', function($app) {
            return new LanguageDetector($app['config']->get('app.enabled_languages'));
        });
    }

}
<?php

class LanguageDetector
{
    private $languages = [];

    public function __construct($enabledLanguages)
    {
        $this->languages = (array)$enabledLanguages;
    }

    public function getLangSlug()
    {
        return in_array(Request::segment(1), $this->languages, true) ? Request::segment(1) : null;
    }

    public function setLang()
    {
        $lng = $this->getLangSlug();
        if (!is_null($lng)) {
            Session::put('locale', $lng);
        }

        if ( Session::has('locale') ) {
            App::setLocale(Session::get('locale'));
        }
    }

    public function getPureUri($uri)
    {
        return preg_replace('~^/(?:'.implode('|', $this->languages).')/?(.*)$~', '/$1', $uri);
    }

    public function getLangUri($uri, $lang = null)
    {
        $uri = (is_null($lang) || !in_array($lang, $this->languages, true) ? App::getLocale() : $lang)
            .'/'.ltrim($this->getPureUri($uri), '/');
        return '/'.trim($uri, '/');
    }

    public function getPureRequestUri()
    {
        return $this->getPureUri(Request::getRequestUri());
    }

    public function getLangRequestUri($lang = null)
    {
        return $this->getLangUri(Request::getRequestUri(), $lang);
    }

}