Manage locale in URL

master
Julien Rosset 1 year ago
parent a9ad001ebc
commit d4fb881087

@ -4,50 +4,51 @@
"minimum-stability": "stable", "minimum-stability": "stable",
"prefer-stable": true, "prefer-stable": true,
"require": { "require": {
"php": ">=8.1", "php": ">=8.1",
"ext-ctype": "*", "ext-ctype": "*",
"ext-iconv": "*", "ext-iconv": "*",
"doctrine/annotations": "^2.0", "doctrine/annotations": "^2.0",
"doctrine/dbal": "^3", "doctrine/dbal": "^3",
"doctrine/doctrine-bundle": "^2.9", "doctrine/doctrine-bundle": "^2.9",
"doctrine/doctrine-migrations-bundle": "^3.2", "doctrine/doctrine-migrations-bundle": "^3.2",
"doctrine/orm": "^2.15", "doctrine/orm": "^2.15",
"phpdocumentor/reflection-docblock": "^5.3", "phpdocumentor/reflection-docblock": "^5.3",
"phpstan/phpdoc-parser": "^1.20", "phpstan/phpdoc-parser": "^1.20",
"stof/doctrine-extensions-bundle": "^1.7", "stof/doctrine-extensions-bundle": "^1.7",
"symfony/asset": "6.4.*", "symfony/asset": "6.4.*",
"symfony/asset-mapper": "6.4.*", "symfony/asset-mapper": "6.4.*",
"symfony/console": "6.4.*", "symfony/console": "6.4.*",
"symfony/doctrine-messenger": "6.4.*", "symfony/doctrine-messenger": "6.4.*",
"symfony/dotenv": "6.4.*", "symfony/dotenv": "6.4.*",
"symfony/expression-language": "6.4.*", "symfony/expression-language": "6.4.*",
"symfony/flex": "^2", "symfony/flex": "^2",
"symfony/form": "6.4.*", "symfony/form": "6.4.*",
"symfony/framework-bundle": "6.4.*", "symfony/framework-bundle": "6.4.*",
"symfony/http-client": "6.4.*", "symfony/http-client": "6.4.*",
"symfony/intl": "6.4.*", "symfony/intl": "6.4.*",
"symfony/mailer": "6.4.*", "symfony/mailer": "6.4.*",
"symfony/mime": "6.4.*", "symfony/mime": "6.4.*",
"symfony/monolog-bundle": "^3.0", "symfony/monolog-bundle": "^3.0",
"symfony/notifier": "6.4.*", "symfony/notifier": "6.4.*",
"symfony/process": "6.4.*", "symfony/process": "6.4.*",
"symfony/property-access": "6.4.*", "symfony/property-access": "6.4.*",
"symfony/property-info": "6.4.*", "symfony/property-info": "6.4.*",
"symfony/rate-limiter": "6.4.*", "symfony/rate-limiter": "6.4.*",
"symfony/runtime": "6.4.*", "symfony/runtime": "6.4.*",
"symfony/security-bundle": "6.4.*", "symfony/security-bundle": "6.4.*",
"symfony/serializer": "6.4.*", "symfony/serializer": "6.4.*",
"symfony/string": "6.4.*", "symfony/string": "6.4.*",
"symfony/translation": "6.4.*", "symfony/translation": "6.4.*",
"symfony/twig-bundle": "6.4.*", "symfony/twig-bundle": "6.4.*",
"symfony/validator": "6.4.*", "symfony/validator": "6.4.*",
"symfony/web-link": "6.4.*", "symfony/web-link": "6.4.*",
"symfony/yaml": "6.4.*", "symfony/yaml": "6.4.*",
"symfonycasts/sass-bundle": "^0.6.0", "symfonycasts/sass-bundle": "^0.6.0",
"symfonycasts/verify-email-bundle": "^1.17", "symfonycasts/verify-email-bundle": "^1.17",
"twbs/bootstrap": "^5.3", "twbs/bootstrap": "^5.3",
"twig/extra-bundle": "^3.0", "twig/extra-bundle": "^3.0",
"twig/twig": "^3.0" "twig/string-extra": "^3.10",
"twig/twig": "^3.0"
}, },
"config": { "config": {
"allow-plugins": { "allow-plugins": {

@ -1,5 +1,5 @@
framework: framework:
default_locale: en default_locale: '%locale.default%'
translator: translator:
default_path: '%kernel.project_dir%/translations' default_path: '%kernel.project_dir%/translations'
fallbacks: fallbacks:

@ -1,5 +1,10 @@
core_root_redirect:
path: /
controller: App\Controller\CoreController::root_redirect
controllers: controllers:
resource: resource:
path: ../src/Controller/ path: ../src/Controller/
namespace: App\Controller namespace: App\Controller
type: attribute type: attribute
prefix: /{_locale<%locale.all%>}

@ -7,6 +7,9 @@ parameters:
mailer.email: '%env(MAILER_EMAIL)%' mailer.email: '%env(MAILER_EMAIL)%'
mailer.name: '%env(MAILER_NAME)%' mailer.name: '%env(MAILER_NAME)%'
locale.all: 'en|fr'
locale.default: 'en'
services: services:
# default configuration for services in *this* file # default configuration for services in *this* file
_defaults: _defaults:

@ -3,6 +3,7 @@
namespace App\Controller; namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\Attribute\Route;
@ -10,6 +11,19 @@ use Symfony\Component\Routing\Attribute\Route;
* Controller for core page : home, etc. * Controller for core page : home, etc.
*/ */
class CoreController extends AbstractController { class CoreController extends AbstractController {
/**
* Redirection for root URL (without locale)
*
* @param Request $request The request
*
* @return Response The response
*/
public function root_redirect (Request $request): Response {
return $this->redirectToRoute('core_main', [
'_locale' => $request->getPreferredLanguage(explode('|', $this->getParameter('locale.all'))),
]);
}
/** /**
* Home page * Home page
* *

Loading…
Cancel
Save