mirror of
https://gitnet.fr/deblan/gist.git
synced 2021-08-14 08:30:49 +02:00
Default locale
This commit is contained in:
parent
a6f20de8cf
commit
c0eadc3433
@ -5,6 +5,8 @@ use Symfony\Component\HttpFoundation\AcceptHeader;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Translation\Loader\YamlFileLoader;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\Cookie;
|
||||
|
||||
$app->register(new TranslationServiceProvider(), array(
|
||||
'locale' => 'en',
|
||||
@ -40,19 +42,29 @@ $app['routes'] = $app->share($app->extend('routes', function ($routes, $app) {
|
||||
*/
|
||||
$app->get('/', function (Request $request) use ($app) {
|
||||
$accept = AcceptHeader::fromString($request->headers->get('Accept-Language'));
|
||||
$cookie = $request->cookies->get('locale');
|
||||
|
||||
// Default locale fallback
|
||||
|
||||
if (!empty($cookie) && in_array($cookie, $app['locales'])) {
|
||||
$foundLocale = $cookie;
|
||||
} else {
|
||||
$foundLocale = $app['translator']->getLocale();
|
||||
|
||||
foreach ($app['locales'] as $locale) {
|
||||
if ($accept->has($locale)) {
|
||||
if ($cookie === $locale || $accept->has($locale)) {
|
||||
$foundLocale = $locale;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new RedirectResponse($app['url_generator']->generate(
|
||||
'home',
|
||||
array('_locale' => $foundLocale)
|
||||
));
|
||||
});
|
||||
|
||||
$app->after(function(Request $request, Response $response) use ($app) {
|
||||
$cookie = new Cookie('locale', $request->attributes->get('_locale'), strtotime('+1 month'));
|
||||
$response->headers->setCookie($cookie);
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user