diff --git a/application/config/application.php b/application/config/application.php index 9f597954..abfcf072 100755 --- a/application/config/application.php +++ b/application/config/application.php @@ -84,7 +84,7 @@ /* |-------------------------------------------------------------------------- - | Application Language + | Default Application Language |-------------------------------------------------------------------------- | | The default language of your application. This language will be used by @@ -94,6 +94,19 @@ 'language' => 'en', + /* + |-------------------------------------------------------------------------- + | Supported Languages + |-------------------------------------------------------------------------- + | + | These languages may also be supported by your application. If a request + | enters your application with a URI beginning with one of these values + | the default language will automatically be set to that language. + | + */ + + 'languages' => array('fr', 'sp'), + /* |-------------------------------------------------------------------------- | SSL Link Generation diff --git a/laravel/laravel.php b/laravel/laravel.php index a1ca2061..2544c617 100644 --- a/laravel/laravel.php +++ b/laravel/laravel.php @@ -107,6 +107,46 @@ return Event::first('404'); }); +/* +|-------------------------------------------------------------------------- +| Gather The URI And Locales +|-------------------------------------------------------------------------- +| +| When routing, we'll need to grab the URI and the supported locales for +| the route so we can properly set the language and route the request +| to the proper end-point in the application. +| +*/ + +$uri = URI::current(); + +$locales = Config::get('application.languages', array()); + +$locales[] = Config::get('application.language'); + +/* +|-------------------------------------------------------------------------- +| Set The Locale Based On Route +|-------------------------------------------------------------------------- +| +| If the URI starts with one of the supported languages, we will set +| the default language to match that URI segment and shorten the +| URI we'll pass to the router to not include the lang segment. +| +*/ + +foreach ($locales as $locale) +{ + if (starts_with($uri, $locale)) + { + Config::set('application.language', $locale); + + $uri = trim(substr($uri, strlen($locale)), '/'); break; + } +} + +if ($uri === '') $uri = '/'; + /* |-------------------------------------------------------------------------- | Route The Incoming Request @@ -118,8 +158,6 @@ | */ -$uri = URI::current(); - Request::$route = Routing\Router::route(Request::method(), $uri); $response = Request::$route->call();